1

使用下面一段试图实现一个类的 javascript:

function aClass(){
  this.prop1 = this.getProp1();
}

aClass.prototype.getProp1 = function(){
  // do some stuff
  return result;
}

然后我可以像这样使用它:

var obj = new aClass();
alert(obj.prop1);

我现在想做的是:

obj.prop1 = "some value";

这当然会覆盖 prop1,我无法再从 getProp1 函数检索生成的结果。

所以简而言之,是否可以创建一个允许读写的属性,但在这两种情况下都调用一个函数来进行验证?

只要我能达到预期的效果,我很高兴能采用完全不同的方法来处理我在这里所拥有的东西。

它需要与较旧的浏览器一起使用。

4

2 回答 2

1

您可以为对象属性定义 getter 和 setter;看这里这里。语法将与获取或设置属性相同,但将运行代码而不是愚蠢的值更改。

活生生的例子

兼容性限制:不适用于 IE < 9。

于 2012-09-28T10:57:34.600 回答
0

假设您不受某些旧 JS 实现的限制,您可以使用Object.defineProperty

于 2012-09-28T10:57:42.497 回答