是否有可能让一个方法像javascript类中的属性一样?

时间:2012-09-28 10:54:17

标签: javascript

采取以下试图实现类的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函数中检索生成的结果。

简而言之,是否可以创建一个允许读写的属性,而是在两种情况下都调用一个函数,比如验证目的?

只要我达到预期的效果,我就会对与我所拥有的完全不同的方法感到高兴。

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

2 个答案:

答案 0 :(得分:1)

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

Live example

兼容性约束:不适用于IE< 9。

答案 1 :(得分:0)

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