javascript 使用函数作为变量 (getter)

javascript use a function as a variable (getter)

我只是想通过这种方式在 javascript 中获得一个 "getter"

var Product = function(){
  var self = this; 
  var _id = function() { 
    return self.styleCode + '-' + self.materialCode + '-' + self.colourCode; 
  }
  self.materialCode = ''
  self.colourCode = ''
  ..
  self.id = _id()
}
..
var obj = new Product();
//.. initialize properies
obj.id // = "--"

但似乎并没有像我相信的那样每次都调用该函数。 我试着用这个 Javascript: Use function as variable 像这样

var Product = function(){
  var self = this; 
  self.materialCode = ''
  self.colourCode = ''
  ..
  get self.id() { return self.materialCode + '-' + self.colourCode; }
}   

但我在 get 关键字上遇到异常。 任何的想法? 谢谢

您可以在 selfObject.defineProperty 上定义 id 属性,像这样

Object.defineProperty(self, 'id', {
    get: function () {
      return self.materialCode + '-' + self.colourCode;
    }
});

可以从MDN上看到this example,供参考。

使用Object.defineProperty on MDN.

var Product = function(){
  var self = this; 
  self.materialCode = ''
  self.colourCode = ''

  Object.defineProperty(self, "id", {
        //printing the full code here
        get : function(){return self.materialCode + '-' + self.colourCode;},
        set : function(value){ null },
        enumerable : false,
        configurable : false
        //this is the default set up for Object.defineProperty when using getters and setters,
        //those two other properties default to false.
  });
}

var obj = new Product();
obj.materialCode = 124;
obj.colourCode = 5783;
alert(obj.id);

只需调用obj.id

可以设置setget函数。并将其用作普通的 属性 声明。我 敦促 你阅读 MDN 上的文章以了解更多可能性。

是另一种方式

var xvar = new function(id){ 
    this.toString = this.valueOf = function() {
         return $(id).width();
    };
}('#y');

getter 和 setter 的制作方式不同

使用此代码

self.id = _id();

您正在 self.id return 中存储在构造函数中调用的 _id() 的值

使用此代码

get self.id()

您正在用参数声明 getter(正确的方式 get id()

在这里您可以找到有关 getter/setter 的有用信息,并且不要忘记 firefox GETTERSETTER

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get

保持警惕!此代码不适用于非 firefox 浏览器!