使用javascript

时间:2015-07-08 17:51:33

标签: javascript

我正在尝试在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对象的任何想法。

2 个答案:

答案 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'));