学习js高级第三天

今天学习原型、原型链和继承
原型链: 就是实例对象和原型对象之间的关系, 是通过__proto__原型来联系的
实例对象中有__proto__原型
构造函数中有prototype原型
prototype对象中也有__proto__原型, 指向了哪里—>系统的构造函数 Object

继承: 继承是一种关系, 值的是类与类之间的关系, 但js中没有类,有构造函数模拟类,通过原型来实现继承.继承也是为了数据共享
多态: 一个对象有不同的行为, 或者是同一个行为针对不同的对象,产生不同的效果,想要多态,先要有继承
继承: 即改变this指向

借用:
call这个方法就是Person构造函数的代码调用了一下, 里面的this指向的学生,是学生需要调用这些属性
借用构造函数: 构造函数名字.call(当前对象,构造函数里面的参数)–>解决了属性继承
改变原型this指向: 构造函数.原型对象=想指向的实例对象–>解决了方法继承
组合继承: 借用构造函数 和在原型对象上改变this指向

  // 拷贝继承: 把一个对象的属性和方法复制到另一个对象
        var obj1={
            name:"张三",
            age:"18",
            sleep:function () {
                console.log("睡觉");
            }
        }
//改变了地址的指向
    var obj2=obj1;
    console.log(obj2);

//另一种拷贝继承
    var obj2={};
    //一遍历的方式
     for (var key in obj1){
         obj2[key]=obj1[key]
     }
   console.log(obj2);

总结:
原型的作用: 继承----> 目的: 节省空间
原型继承: 改变原型的指向
借用构造函数继承: .call() 主要解决属性继承
组合继承: 原型继承+ 借用构造函数继承
拷贝继承: 把对象中需要共享的属性和方法直接以遍历的方式复制到另一个对象中

猜你喜欢

转载自blog.csdn.net/qq_44388393/article/details/86582950