2

为什么classList不是一个属性Element.prototype?因为元素有一个classList属性,我会自动假设它在元素的prototype中,但显然不是。那么它在哪里呢?

Chrome的控制台:

> Element.prototype.classList
undefined
> document.createElement().classList
DOMTokenList
4

2 回答 2

3

它必须是每个Element实例的属性,因为如果它在Element原型上,那么所有元素将共享相同的类列表,就像Array' 的.length属性必须在每个数组实例上一样,否则所有数组都将具有相同的长度。原型的关键在于它被相同类型的所有对象共享。

于 2013-08-07T01:57:07.097 回答
2

除了nnnnnn的答案,大多数实例变量都在构造函数中分配。

function foo(){
    this.bar = "baz";
}

foo.prototype.bar // undefined
new foo().bar // "baz"

函数被添加到原型中(通常,但它们也可以在构造函数中设置)。

于 2013-08-07T01:59:18.153 回答