[英]About JavaScript call function
我想問一個關於JavaScript call()
函數的小問題。 我已經開始深入學習JavaScript,但是我還是聽不懂。為什么在這個例子中我會得到結果:
var args = Array.prototype.slice.call(arguments);
與此有關,我遇到了錯誤。
var args = Array.prototype.call(arguments);
這兩個函數都存在於Array的__proto__
中,因為我知道Array是擴展函數。 在此示例中返回true Array.__proto__ === Function.prototype
類型:
typeof(Array.prototype.slice)
> "function"
(這是一個函數,您可以使用call
參見Function.prototype.call
)
typeof(Array.prototype)
> "object"
(這不是一個功能,您不能使用call
- “ 看不到 ” Object.prototype.call
)
call
是函數的方法。 Array.prototype.slice
是一個函數,但是Array.prototype
不是,因此它沒有call
方法。
Array.__proto__ === Function.prototype
呵呵。 我認為您偶然發現了一些內部實現,但實際上並非如此。 根據您在計算機科學/軟件工程方面的實際經驗,我很想建議您忽略這一特別的偽像。
原型是Object類的實例,並且它們沒有call
方法(除非它是由用戶或庫定義的)。 因此, Whatever.prototype.call
應該按預期調用錯誤。
另一個明顯的行為:
對象instanceof函數//-> true函數instanceof對象//-> true
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.