js原型链。。fuck

function Person(name){
            this.name = name;
        };
        function Mother(){

        };
        //给mother提供公有的属性
        Mother.prototype = {
            age:18,
            home:['Beijing','Shanghai']
        }
        //Person的属性 指向Mother的原型
        Person.prototype = new Mother();
        //实例化
        var p1 = new Person('jack');//通过p1.__proto__ 可以查到p1和p2的原型是一样的。age:18 home:Beijing Shanghai
        var p2 = new Person('viven');
        p1.age = 118;
        console.log(p1.age); //118
        console.log(p2.age);//18
        //通过__proto__查看到p1的原型还是没变,但是p1多了一个age属性 值为118,也就是说实例不能改变原型的属性
        p1.home[0] = 'Shenzhen';
        console.log(p1.home);// Shenzhen Shanghai
        console.log(p2.home);// Shenzhen Shanghai 因为原型中的引用类型的值是共享的,可以改变
        //同样可以和上面一样,改变原型的属性
        p1.home =['guangzhou','hangzhou'];
        console.log(p1.home);
        console.log(p2.home); //改变不了,只是给p1添加了一个home的属性
        //可以通过delete 来删除实例的属性
        delete p1.age;
        console.log(p1.age); //18
        //改写原型
        Person.prototype.name = 'kevin';
        delete p1.name;
        console.log(p1.name);//kevin  给Person的原型添加了一个name 属性,但是会被实例p1的name 覆盖
        //重写原型
        Person.prototype = {
            age: 28,
            address: { country: 'USA', city: 'Washington' }
        };
        var p3 = new Person('Obama');//原型重写后和Mother没有一点关系了。。
        //改写Mother原型
        Mother.prototype.no = 9527; //p1 p2有联系,但是p3没有关系
        //重写Mother原型
        //外婆赚钱了,买了2辆车,谁有一份呢?
        Mother.prototype = {
            car:2,
            carname:['benchi','baoma']
        }
        var p4 = new Person('join'); //谁都没有份,因为Person和Mother已经断绝关系了。。。
        //为了车和你外婆和好
        Person.prototype =new Mother();
        var p5 = new Person('lala');//你外婆不认你们,只认这个外甥女