無法重現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