创建对象-原型初识

 <h3>一切皆对象,他们都来自null;</h3>
        <ol>
            <li>每一个对象(除了null)都和另一个对象相关联,这个所谓的另一个对象就是原型;</li>
            <li>不难理解,原型也是对象;</li>
            <li>所有的内置构造函数都有一个继承自Object.prototype的原型;</li>
            <li>Object.prototype是没有原型的对象;</li>
            <li>每一个对象都从原型继承属性,直到null结束;</li>
            <li>
            所以我们也可以看下原型链:
            <pre>
            var arr1 = new Array(1,2,3);
            arr1-->Array.prototype-->Object.prototype-->null; 形成链,到null结束,完美;
            var date1 = new Date();
            date1-->Date.prototype-->Object.prototype-->null; 形成链,到null结束,完美;
            </pre>
            这就是传说中的原型链;简单总结下:
            <pre>
            一、构造函数、原型和实例的关系
                a,构造函数都有一个属性prototype,这个属性是一个对象,是Object的实例;
                b,原型对象prototype里有一个constructor属性,该属性指向原型对象所属的构造函数;
                c,实例对象都有一个__proto__属性,该属性也指向构造函数的原型对象;
            二、prototype与_proto_的关系
                a,prototype是构造函数的属性;
                b,__proto__是实例对象的属性;
                c,两者都指向同一个对象;
            </pre>
            </li>
        </ol>
原文地址:https://www.cnblogs.com/LeoXnote/p/9645572.html