原型二,字面量

function Box() {}
        var box = new Box();
        alert(Box.prototype);//使用构造函数名访问,并且是不能读取信息,是【object,object】
        alert(box.prototype);//undefined,因为实例不能访问prototype,如果想访问就要用对象实例提供的指针
                                    //__proto__    
//字面量
        function Box() {}  //{}创建了一个新的对象
        //使用字面量的方式创建原型对象,这里{}就是对象,是Object,new Object()就相当于{};
        Box.prototype = {
            constructor: Box, //强制指向Box
            name: 'LEE',
            age: 100,
            run: function() {
                return this.name + this.age;
            }
        };
        var box = new Box();
        alert(box.name);//LEE;
        alert(box.constructor);//返回的是一个object,function Object() { [native code] },因为上面提到的这里{}就是对象,是Object,new Object()就相当于{};

  重写的注意点

  function Box() {}  //{}创建了一个新的对象
        //使用字面量的方式创建原型对象,这里{}就是对象,是Object,new Object()就相当于{};
        Box.prototype = {
            constructor: Box, //强制指向Box
            name: 'LEE',
            age: 100,
            run: function() {
                return this.name + this.age;
            }
        };
        
        //重写了原型对象


        Box.prototype = {
            age: 200
        };
        var box = new Box();
        alert(box.name);        //undefined,这里不会保留之前原型的任何信息,把原来的原型对象个构造原型的实例切断
        alert(box.run());       //报错,因为这里没有了run(),已经切断,上面的那个run()没有了

  

  

原文地址:https://www.cnblogs.com/shenq/p/5453544.html