我想功能类似于获得C#.net的属性。例如

var method   :   function() {
      return "something which always change";
 },
var objectName = {
 property :   method()


};

因此,每当我调用objectName.property时,都应该返回实际的新值。不是声明时设置的值。可能吗。

在.net属性中,保存函数地址,并且每次都会调用该函数。我想要这样的功能。

谢谢,

最佳答案

使用Object.defineProperty覆盖吸气剂。

var counter = 0;

var method = function() {
   return counter++;
};

function ObjectName() {}

Object.defineProperty(ObjectName.prototype, 'property', {
  get: method
});

var objectName = new ObjectName();

console.log(objectName.property); // 0
console.log(objectName.property); // 1


JSBin演示https://jsbin.com/racegeteni/edit?js,console

10-02 18:47