对象数组将无法清除

时间:2017-07-06 07:17:44

标签: javascript arrays instance-variables

我有一个数组,它是一个名为.phrases的属性,称为Passage。我有一个函数,它是同一个对象的属性。在函数中,我有这样的代码:

var returnPassage=new Passage();
returnPassage.phrases=[];
console.log(returnPassage.phrases);

Google Chrome中的控制台日志在一个级别上显示一个空数组,但是如果我单击该下拉列表,则表明该数组根本没有更改。无论我是尝试使用.pop()还是.splice()清除数组,还是将其替换为new Array(),都是如此。如果我这样做,那也是奇怪的(!!!)如果:

var returnPassage=new Passage();
returnPassage.phrases=null;
returnPassage.phrases=[];
console.log(returnPassage.phrases);

控制台日志显示与原始数组相同的数组,而不是像我期望的那样的空白数组。可能会发生什么?

2 个答案:

答案 0 :(得分:0)

可能会发生的是,短语只是一个只有getter的属性,没有看到Passage对象,很难说是发生了什么。

您可以想象在Passage对象

中设置这样的设置



function Passage() {
	Object.defineProperty(this, 'phrases', {
  	get: function() {
    	return ['phrase 1', 'phrase2'];
    },
    set: function() {
    	// no setter
    }
  })
}

var passage = new Passage();
passage.phrases = null;
passage.phrases = [];
console.log(passage.phrases);




答案 1 :(得分:0)

以下是发生的情况:Chrome正在记录数组并在顶行显示,然后我的方法更改了它,然后下拉菜单显示了它最近的方式。所以这不是javascript如何工作的问题,这是我阅读Chrome的显示器的问题。