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

时间:2015-07-30 12:40:22

标签: javascript 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关键字上遇到异常。 任何的想法? 感谢

4 个答案:

答案 0 :(得分:4)

您可以使用idself上定义Object.defineProperty属性,就像这样

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

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

答案 1 :(得分:3)

使用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 上的文章,以了解有关可能性的更多信息。

答案 2 :(得分:0)

是另一种方式

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

答案 3 :(得分:0)

getter和setter以不同的方式制作

使用此代码

self.id = _id();

存储在构造函数

中调用的_id()的self.id返回值

使用此代码

get self.id()

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

在这里你可以找到关于getter / setter的有用信息,不要忘记firefox GETTER SETTER

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

继续警告!此代码在非firefox浏览器中不起作用!