Javascript Getter返回空值的整个函数
我创建了一个简单的存储对象,用setter和getter存储名称。但是,在设置名称之前尝试获取名称会返回函数吗?我希望它返回空值Javascript Getter返回空值的整个函数,javascript,object,getter-setter,Javascript,Object,Getter Setter,我创建了一个简单的存储对象,用setter和getter存储名称。但是,在设置名称之前尝试获取名称会返回函数吗?我希望它返回空值 name: function (val) { var value = val; this.__defineGetter__('value', function () { if (value == null) return null; return value; }); this.__defineSet
name: function (val) {
var value = val;
this.__defineGetter__('value', function () {
if (value == null) return null;
return value;
});
this.__defineSetter__('value', function(val) {
value = val;
});
},
有关完整代码:
试试这种方法。你不需要有接受者或接受者
var storage = {};
Object.defineProperty(storage, 'name', {
value : null,
writable: true
});
alert(storage.name);
storage.name = 'Bob';
alert(storage.name);
这也将以同样的方式工作。
name
是存储
对象的一种方法-调用该对象时,将为.value
属性创建一个setter/getter。你想要的是
var storage = {};
var value = val;
storage.__defineGetter__('name', function () {
if (value == null) return null;
return value;
});
storage.__defineSetter__('name', function(val) {
value = val;
});
或者使用适当的对象。定义属性
和用于使值
本地的IEFE:
var storage = (function() {
var value = val;
return Object.defineProperty({}, 'name', {
get: function () {
if (value == null) return null;
return value;
},
set: function(val) {
value = val;
}
});
}());
因为您将名称声明为函数。然后用字符串覆盖它。它甚至从不执行代码来定义get/set。为什么需要
对象。defineProperty
位?如果没有这个,它应该可以正常工作。