在這里學習 JS 的完全初學者。我不明白為什么當你宣告一個變數時它不會完全繼承它的父類方法,例如:
// I initiate an array (my question is the same for all type of vars)
var myArr = ["foo", "bar"]
// Let's say I call a random function of the parent class Array
console.log(Array.isArray(myArr)); // true
// Since I assume that myArr inherited of the COMPLETE LIST of Array's methods, I should be able to do this:
console.log(myArr.isArray()); // Uncaught TypeError
為什么變數不繼承其父類的所有方法?取而代之的是,您需要在Array和myArr的功能之間進行混合。兩邊應該是一樣的吧?
uj5u.com熱心網友回復:
Array.isArray也可以在非陣列上呼叫,所以從其他類的實體呼叫就不會有該方法,導致運行時錯誤。基本上,如果你知道它是一個陣列并且它是可呼叫的,你就不需要呼叫它。
這就是為什么它不在 Array 原型上并且不能從實體中呼叫。
const a = null
a.isArray() // bad
Array.isArray(a) // good
開發人員可以選擇在 Javascript 中向類、實體(又名原型)或兩者添加方法。在這種情況下,它只被添加到類中,而不是實體中。
它可能已被添加到的原型Object,但后來它仍然不會是對的情況下boolean,number,string,symbol,或undefined。
uj5u.com熱心網友回復:
當你宣告一個變數是一個類的實體時,沒有繼承。
當你宣告一個擴展另一個類的類時,繼承就發生了。
Array.isArray() 是 JavaScript Array 物件的靜態屬性。
通常,靜態方法用于實作屬于類的函式,而不是屬于類的任何特定物件。
uj5u.com熱心網友回復:
您需要將陣列作為引數傳遞給 isArray 函式。
例如:
console.log(myArr.isArray(myArr))
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/398011.html
標籤:javascript 功能 班级 变量 遗产
上一篇:計算字串向量中連續數字的函式
