Javascript属性get和set类似于c#.net

Javascript property get and set similar to c# .net

本文关键字:类似于 net set 属性 get Javascript      更新时间:2023-09-26

我想要一些类似于C#.net的get属性的功能。例如

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

};

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

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

谢谢,

使用Object.defineProperty覆盖getter。

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,控制台

用更像.net c#风格的其他方法是

  var o = {
  a: 7,
  get b() { 
    return this.a + 1;
  },
  set c(x) {
    this.a = x / 2
  }
};
console.log(o.a); // 7
console.log(o.b); // 8
o.c = 50;
console.log(o.a); // 25

由于OOP的原因,您应该将object视为.Net.中的Class

例如:

var Superman = function () {
  
  this.quality = 'charming';
  this.height = "6'5'"";
  this.fly = function() {
    console.log('flying..');
  }
  this.save = function(name) {
    console.log('Save ' + name);
  }
  
  return this;
};
var CK = Superman();
console.log(CK.quality);
CK.save('L. Lane');