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