8.面向对象
2021-11-15 20:47:22 23 举报
AI智能生成
登录查看完整内容
为你推荐
查看更多
创建对象
作者其他创作
大纲/内容
优点:实现了创建功能
缺点:创建的对象无法与Person关联,无法识别对象是什么类型
1.工厂模式
1.在内存中创建一个对象
2.这个新对象的__proto__属性赋值给构造函数的prototype
3.构造函数的this被赋值为这个新的对象
4.执行构造函数的代码,完成this的赋值
5.如果构造函数返回为非空对象,则返回该对象,否则返回刚创建的对象(this)
new 操作符干了什么
构造函数的方法每一个都创建了一遍,占用内存空间如果抽离公共方法则会出现作用域混乱的情况
缺点
2.构造函数模式
1.无论何时,声明一个函数就会按照特定的规则创建出函数的prototype属性(称之为原型对象)
2.原型对象默认会有一个constructor属性,指向构造函数
3.每次创建新对象的时候,其__proto__属性总会指向构造函数的prototype对象
4.创建一个纯净的对象:Object.create(null)
理解原型
会优先从对象本身的属性去找,找不到再去原型对象里面找,直到找不到为止
原型层级
查询实例和原型上是否有该属性: ‘name' in person1
遍历实例和原型上的属性
in 操作符
for-in 循环和 Object.keys()的枚举顺序是不确定的
Object.getOwnPropertyNames()、Object.getOwnPropertySymbols()和 Object.assign()的枚举顺序是确定性的。先以升序枚举数值键,然后以插入顺序枚举字符串和符号键
属性枚举顺序
弱化了传参的能力
引用类型共享的问题
3.原型链模式
创建对象的方式
1.原型链继承
实现原理:在子类的构造函数中用call或apply调用父类的构造函数
代码实现
优点:可以传参
缺点:子类的实例无法访问父类原型上的方法
优缺点
2.盗用构造函数继承
实现原理:综合原型链继承+盗用构造函数继承的优点,原型链继承方法,构造函数继承属性
3.组合继承
实现原理:显示的将构造函数的原型设置为被继承的对象
缺点:共享引用类型
4.原型式继承
5.寄生式继承
6.寄生式组合继承
继承的N种方式
面向对象
0 条评论
回复 删除
下一页