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 关键字上遇到异常。
任何的想法?
谢谢
您可以在 self
和 Object.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
。
可以设置set
和get
函数。并将其用作普通的 属性 声明。我 敦促 你阅读 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 GETTER 和 SETTER
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get
保持警惕!此代码不适用于非 firefox 浏览器!
我只是想通过这种方式在 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 关键字上遇到异常。 任何的想法? 谢谢
您可以在 self
和 Object.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
。
可以设置set
和get
函数。并将其用作普通的 属性 声明。我 敦促 你阅读 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 GETTER 和 SETTER
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get
保持警惕!此代码不适用于非 firefox 浏览器!