我正在尝试在javascript中测试一个函数,该函数使用get和set方法从属性中获取值。如何使用get和set方法定义对象,以便在调用函数时,它将能够使用get获取属性值并使用set设置新值。 我将对象定义如下:
var items = {'item.isActive': false};
Object.defineProperty(items, 'item.isActive', {
get: function() { return items['item.isActive'];},
set: function(newVal) {
items['item.isActive'] = newVal;
}
});
当我尝试使用
获取时items.get('item.isActive')
我收到错误
items.get is not a function
关于如何为get to work定义items对象的任何想法。
答案 0 :(得分:0)
您实际上并没有直接调用getter和setter函数。当您访问对象的成员时,将调用它们。
您可以像这样访问您的媒体资源:items['item.isActive']
。但是,在您的代码中,您有一个错误,调用getter会调用自身,导致超出最大调用堆栈大小。
编辑:
最有可能的是:
var items = {'_item.isActive': false};
Object.defineProperty(items, 'item.isActive', {
get: function() { return this['_item.isActive'];},
set: function(newVal) {
items['_item.isActive'] = newVal;
}
});
console.log( items['item.isActive'] );
答案 1 :(得分:0)
var items = {
'item.isActive': false,
get: function() { return this['item.isActive'];},
set: function(newVal) {
this['item.isActive'] = newVal;
}
};
console.log(items.get('item.isActive'));