对象属性查找&设置
属性查找原则
- 会先在自身上查找,如果没有
- 则根据
__proto__对应的原型去找,如果没有 - 一直找到
Object.prototyp,如果没有,那就找不到了。
属性设置原则
只会修改对象自身的属性,如果自身没有这个属性,那么就会添加这个属性,并不会修改原型中的属性。
hasOwnProperty 方法
语法:对象.hasOwnProperty(属性)
作用:判断该属性是否是对象自身的属性,如果是返回true
使用场景举例:使用在for…in遍历对象中,来过滤出对象自身的属性
1 | function Person(name){ |
继承
在JS中的继承概念非常简单:一个对象自己没有的属性和方法,另一个对象有,拿过来使用,就实现了继承。
继承的目的:让一个对象可以使用另一个对象的属性和方法。
JS常见的几种继承模式:
混入式继承(mixin)
把一个对象中的属性和方法拷贝到另一个对象中。
1 | var ff = { |
原型链继承
一个对象可以访问构造函数的原型中的属性和方法,那么如果想要让一个对象增加某些属性和方法,
只需要把这些属性和方法放到原型对象中即可。这样就实现了继承, 称之为原型链继承
直接给原型增加属性和方法
原型替换(注意:constructor)
mixin+原型替换
Object.create
最初是由道格拉斯丶克罗克福德发布的一篇文章提出的,ECMAScript5新增了Object.create()方法来规范化了这种继承。
ES5中新增了一个方法Object.create(),方法会使用指定的原型对象及其属性去创建一个新的对象。
1 | //参数:proto 一个对象 |