疑问:JS类似数组的对象

JS中没有类的概念,OO中的类在JS中通过对象来实现,而OO中的继承机制则是透过JS中的原型继承来模拟。

var myObj1 = {};
myObj1.prototype = {};

myObj1.prototype // Object

myObj1的prototype属性指向了一个空对象,控制台输出myObj1.prototype是拥有属性为__proto__的对象,该对象是Object.prototype的一个引用,即:myObj1.prototype.__proto__ == Object.prototype。

var myObj2 = {};
myObj2.prototype = {
    length: 0,
    splice: [].splice
};

myObj2.prototype;
// []
Object.prototype.toString.call(myObj2.prototype);
// "[object Object]"

myObj2的原型中多了几个数组对象拥有的属性,此时myObj2.prototype返回的是一个[],虽然是像个数组,但不是完全意义上的数组,因为用toString调用的时候,返回的的确是一个对象,而不是一个数组。

jQuery中运用了这样的机制,不太明白究竟是什么原理。

现在还没有评论

留下您的大名