Getter返回null值时的整个函数

Getter returns whole function on null value

本文关键字:函数 返回 null Getter      更新时间:2023-09-26

我创建了一个简单的存储对象来存储带有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;
    });
},

完整代码:

http://jsfiddle.net/GKC4P/2/

试试这个方法。你不需要getter或setter

var storage = {};
Object.defineProperty(storage, 'name', {
   value : null,
   writable: true
});
alert(storage.name);
storage.name = 'Bob';
alert(storage.name);

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;
        }
   });
}());