为什么classList
不是一个属性Element.prototype
?因为元素有一个classList
属性,我会自动假设它在元素的prototype
中,但显然不是。那么它在哪里呢?
Chrome的控制台:
> Element.prototype.classList
undefined
> document.createElement().classList
DOMTokenList
为什么classList
不是一个属性Element.prototype
?因为元素有一个classList
属性,我会自动假设它在元素的prototype
中,但显然不是。那么它在哪里呢?
Chrome的控制台:
> Element.prototype.classList
undefined
> document.createElement().classList
DOMTokenList
它必须是每个Element
实例的属性,因为如果它在Element
原型上,那么所有元素将共享相同的类列表,就像Array
' 的.length
属性必须在每个数组实例上一样,否则所有数组都将具有相同的长度。原型的关键在于它被相同类型的所有对象共享。
除了nnnnnn的答案,大多数实例变量都在构造函数中分配。
function foo(){
this.bar = "baz";
}
foo.prototype.bar // undefined
new foo().bar // "baz"
函数被添加到原型中(通常,但它们也可以在构造函数中设置)。