无法重现MDN's example(“以类似数组的方式使用对象”)。使用[] .push.call()修改对象的长度
let obj = {
length: 0,
addEl: function (element) {
[].push.call(this, element);
};
};
// Node REPL still expect me to do something, so there's an error. Why?
难道你们能解释这里有什么问题吗?此外,它似乎我不跟这里的力学明白了吧:
// from the example:
obj.addElem({});
obj.addElem({});
console.log(obj.length);
// → 2
如果我们调用函数的一些不同agrument,不{}
,将它的工作?如果它不会,那么为什么我们应该完全使用{}
?这里的this
背景是什么:addEl
方法还是对象本身?如果第二个,为什么不addEl
函数:它不是一个数组函数,所以它应该有它自己的this
(和,我想,我会使用像objThis = this;
属性)。
另一个相关的问题是here。
也许这很愚蠢,但为什么这里不需要分号?我认为,这是每个声明都需要的(抛开一个事实,即JS引擎可以自己预测它们的位置)。 – JulyMorning
@JulyMorning这不是一个声明,而是一个对象文字。一个类似的例子,你可能会看到更好的是'{a:1,b:2;}',这是不正确的,';'不应该在那里。在对象文字之后,要终止一个语句,你当然应该放一个分号,例如'var obj = {a:1,b:2};' – janos
可以请你看一下我在编辑中的问题? – JulyMorning