我创建了一个简单的存储对象来存储带有setter和getter的名称。但是,在设置之前尝试获取名称会返回函数吗?我希望它返回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;
});
},
完整代码:
答案 0 :(得分:1)
试试这种方式。你不需要得到吸气剂或者叮咬者
var storage = {};
Object.defineProperty(storage, 'name', {
value : null,
writable: true
});
alert(storage.name);
storage.name = 'Bob';
alert(storage.name);
这也可以用同样的方式。
答案 1 :(得分:0)
name
是storage
对象的一种方法 - 调用时会为.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;
});
或者使用适当的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;
}
});
}());