簡體   English   中英

關於JavaScript調用函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM