JavaScript - 全局 类 和继承之间的混淆
JavaScript - Confusion between global classes and inheritance
这里是学JS的初学者。我不明白为什么当你声明一个变量时它不会完全继承它的父 class 方法,例如:
// 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
为什么变量不继承其父 classes 的所有方法?相反,您需要混合使用 Array 和 myArr 的函数。两侧应该是一样的吧?
Array.isArray
也可以在非数组上调用,所以从其他 classes 的实例调用它不会有方法,导致运行时错误。基本上如果你知道它是一个数组并且它是可调用的,你就不需要调用它。
这就是为什么它不在数组原型上并且不能从实例中调用的原因。
const a = null
a.isArray() // bad
Array.isArray(a) // good
开发人员可以在 Javascript 中选择向 class、实例(又名原型)或两者添加方法。在这种情况下,它仅被添加到 class,而不是实例。
它本来可以添加到 Object
的原型中,但它仍然不会出现在 boolean
、number
、string
、symbol
, 或 undefined
.
您需要将数组作为参数传递给 isArray 函数。
例如:
console.log(myArr.isArray(myArr))
当你声明一个变量时,它是 Class 的一个实例,没有继承。
当您声明一个扩展另一个 class 的 class 时,继承就发生了。
Array.isArray() 是 JavaScript 数组对象的静态 属性。
通常,静态方法用于实现属于 class 的函数,但不属于它的任何特定对象。
这里是学JS的初学者。我不明白为什么当你声明一个变量时它不会完全继承它的父 class 方法,例如:
// 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
为什么变量不继承其父 classes 的所有方法?相反,您需要混合使用 Array 和 myArr 的函数。两侧应该是一样的吧?
Array.isArray
也可以在非数组上调用,所以从其他 classes 的实例调用它不会有方法,导致运行时错误。基本上如果你知道它是一个数组并且它是可调用的,你就不需要调用它。
这就是为什么它不在数组原型上并且不能从实例中调用的原因。
const a = null
a.isArray() // bad
Array.isArray(a) // good
开发人员可以在 Javascript 中选择向 class、实例(又名原型)或两者添加方法。在这种情况下,它仅被添加到 class,而不是实例。
它本来可以添加到 Object
的原型中,但它仍然不会出现在 boolean
、number
、string
、symbol
, 或 undefined
.
您需要将数组作为参数传递给 isArray 函数。
例如:
console.log(myArr.isArray(myArr))
当你声明一个变量时,它是 Class 的一个实例,没有继承。
当您声明一个扩展另一个 class 的 class 时,继承就发生了。
Array.isArray() 是 JavaScript 数组对象的静态 属性。
通常,静态方法用于实现属于 class 的函数,但不属于它的任何特定对象。