我有一个数组,它是一个名为.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);
控制台日志显示与原始数组相同的数组,而不是像我期望的那样的空白数组。可能会发生什么?
答案 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的显示器的问题。