使用Object.defineProperty设置数组值

时间:2015-04-22 20:50:49

标签: javascript

我使用Object.defineProperty将数组定义为Object上的属性。 在这种情况下,我如何利用通常的数组函数?

下面是相同的代码:

function Foo(){
  this._myArray = null;
}


Object.defineProperty(Foo.prototype, 'someArray', {
  get: function(){
    return this._myArray;
  },
  set: function(newValue){
    console.log('set is ' + newValue);
    this._myArray = newValue;
    checkFunction();
  },
  enumerable: true,
  configurable: true,
  push: function(newValue){
    console.log('push is ' + newValue);
    this._myArray.push(newValue);
  }

});

function checkFunction(){
 console.log('hello');
}

var test = new Foo();
test.someArray = [1,2];
test.someArray.push(3);

您会注意到以下调用不起作用:

test.someArray.push(3);

Plnkr在这里可用:http://plnkr.co/edit/HiYPycAN4bloJa44ANWC

0 个答案:

没有答案