js高级-day03

原型对象:

创建对象:第一步,添加自定义构造函数-----构造函数首字母大写,普通函数驼峰命名法

作用:数据共享,节省内存空间   实例化对象

【构造函数中的原型对象(prototype)和实例对象中的原型对象(__proto__)是相同,

     实例对象中的原型对象(__proto__)指向 构造函数中的原型对象(prototype)   

      console.log(Person.prototype == obj.__proto__); 】

【原型指向可以发生改变;实例对象中的原型__proto__指向的是创建这个对象的构造函数中的原型对象prototype;构造函数中的原型对象prototype的指向发生了改变, 实例对象中的原型__proto__指向也会发生改变】

【原型对象是一个对象 ,有一个 __proto__ 指向 Object这个构造函数中的原型对象prototype,最终指向null】

【实例对象中 __proto__ 指向 原型对象中 prototype】

【实例对象中的__proto__ ---->Person.prototype ----->Object.prototype---->null;】

【dvObj.__proto__--->HTMLDivElement.prototype的__proto__ ---->HTMLElement---->Element---> Node----->EventTarget----->Object---null】

【原型的指向可以发生改变,指向人的实例对象----------先一步改变指向】

【通过原型对象添加eat方法---实现方法共享,节省内存空间】

【如果原型的指向发生了改变,但是又需要用原型对象中的方法和属性, 可以将指向发生改变放在最前面,发生改变后,再来添加属性和方法,这样就可以使用了。】

原型链:是一个关系,实例对象和原型对象之间的关系,关系是通过实例对象的__proto__联系的。

原型对象的继承:面向对象的三大特征:封装,继承,多态

封装:将一个值封装一个变量,将一段代码封装在一个函数中,将多个函数封装在对象中,将多个对象封装在一个js文件中

继承:

1. 修改原型对象的指向实现继承  【 缺陷:属性重复】

2. 借用构造函数实现继承:要继承的子构造函数:父构造函数.call(this,属性1,属性2【缺陷:方法不能继承】

3. 组合继承:原型对象+ 构造函数:原型对象+ 构造函数【属性可以不重复,方法也可以继承】

4.拷贝继承:把一个对象中的属性和方法直接拷贝到另一个对象中 使用for-in循环,将一个对象中的所有属性和方法赋值给另一个对象

 

父级类和子级类之间的继承-----js中没有类,有构造函数,也可以用继承

多态:一个对象有不同的行为,或者同一个行为有不同的对象,产生不同的结果,如果要实现多态,就要先有继承,js可以模拟多态,但是不会去使用,也不会去模拟. 【使用修改原型对象的指向来实现继承】

注意:【因为改变了原型指向的同时实现了继承,直接初始化了属性,继承过来的属性的值都是一样的。】

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值