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