[英]Getter returns whole function on null value
I've created a simple storage object to store a name with setters and getters. 我创建了一个简单的存储对象,用于存储带有setter和getter的名称。 However, trying to fetch the name before it is set returns the function?
但是,尝试在设置名称之前获取名称会返回该函数吗? I would want it to return null
我希望它返回null
name: function (val) {
var value = val;
this.__defineGetter__('value', function () {
if (value == null) return null;
return value;
});
this.__defineSetter__('value', function(val) {
value = val;
});
},
For the full code: 有关完整代码:
Try this way. 尝试这种方式。 You don't need getters or setters
您不需要getter或setter
var storage = {};
Object.defineProperty(storage, 'name', {
value : null,
writable: true
});
alert(storage.name);
storage.name = 'Bob';
alert(storage.name);
This will also work the same way. 这也将以相同的方式工作。
name
is a method of your storage
object - which when called creates a setter/getter for the .value
property. name
是storage
对象的一种方法-调用该对象时将为.value
属性创建一个setter / getter方法。 What you want is 你想要的是
var storage = {};
var value = val;
storage.__defineGetter__('name', function () {
if (value == null) return null;
return value;
});
storage.__defineSetter__('name', function(val) {
value = val;
});
Or with proper Object.defineProperty
and an IEFE for making value
local: 或使用适当的
Object.defineProperty
和IEFE将value
设为本地:
var storage = (function() {
var value = val;
return Object.defineProperty({}, 'name', {
get: function () {
if (value == null) return null;
return value;
},
set: function(val) {
value = val;
}
});
}());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.