我在Chrome嘗試,下面是什麼不正常的原因是什麼?呼叫數組函數原型
Array.prototype.ts= function() {
alert("hallo")
}
[1, 9, 8, 7, 6, 5, 3, 4, 5, 2, 0].ts(); //not ok - what is the reason?
([1, 9, 8, 7, 6, 5, 3, 4, 5, 2, 0]).ts(); //ok
我在Chrome嘗試,下面是什麼不正常的原因是什麼?呼叫數組函數原型
Array.prototype.ts= function() {
alert("hallo")
}
[1, 9, 8, 7, 6, 5, 3, 4, 5, 2, 0].ts(); //not ok - what is the reason?
([1, 9, 8, 7, 6, 5, 3, 4, 5, 2, 0]).ts(); //ok
您在函數聲明後缺少分號。這是我在我的Chrome控制檯中運行的內容,我看到一切都按照它應該的方式工作。請參閱下面撥弄
Array.prototype.ts = function() { alert('test') };
[1,2,3].ts()
當我運行它:) 據我所知,你應該避免延長陣列的原型,因爲它可以改變它的默認行爲,他們都將被執行。 你可以寫一個「普通」的功能,做同樣的事情,只是檢查,如果輸入的參數爲前一個數組開始做別的事情(Array.isArray(yourArray)),這樣你就不會污染不必要的功能,任何東西。
Runthis是正確的,但我想解釋一下爲什麼。
分號一般都不會在JavaScript有用的,但像他這樣的情況說明不使用它們的風險:
一個函數的聲明是有效的表達式。
的表達,隨後在方括號([]
)東西也是一個有效的表達。
所以這兩條線被解釋爲一個單一的表達,並且看起來像在第二行的陣列litteral實際上讀作功能對象的無效索引。我會建議在添加一個分號開始,隨着你的代碼[
或(
啓動(除非它意味着繼續課程的前行,)任何線路的。
換句話說,你的代碼被讀作:
Array.prototype.ts= function() { /*…*/ }[1, 9 /* etc */].ts();