• 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');//你外婆不认你们,只认这个外甥女
  • 相关阅读:
    一个python实现重试机制的简要实践
    元编程技术和动态编译
    NDoc使用简要手册增加了例子代码
    问dudu,评论是否只能删除,不可以直接修改?
    《C#类设计手册》读书随笔(4)
    .NET下几种动态生成代码方式比较
    NDoc使用简要手册
    "引用"表示什么?
    .NET环境编程全景不错的书
    C#实现动态灵活调用业务方法的机制
  • 原文地址:https://www.cnblogs.com/vivenZ/p/6410568.html
Copyright © 2020-2023  润新知