持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第21天,点击查看活动详情
文章概览
- 原型对象
原型对象
当我们创建一个人函数,解析器就会向函数中添加一个prototype属性,每个这个的属性都对应一个对象,而这个对象就是我们所说的原型对象。但是当函数作为普通函数来调用这个prototype属性时,不会起到任何作用,然而在函数以构造函数的方式来调用相关内容时,它所创建的对象中都会有一个隐含的属性指向当前构造函数的原型对象,如果想要访问这个属性,可以通过__proto__来进行访问。
首先我们知道如果访问一个对象的属性或者方法时,先会在当前对象内部进行检索,如果找到了,就会直接使用这个属性或者方法,反之,如果找不到,就会直接使用原型对象中的属性或者方法。
当开发者有需求创建构造函数时,就可以将这些对象所共同拥有的属性和方法统一添加到构造函数的原型对象中,如此就不必分别为每一个对象添加,也不会影响到全局作用域,就可以让每个对象都拥有这些属性和方法了。
常用工具方法
- in:console.log("name" in mc );使用in检查对象中是否含有某个属性时,如果对象中没有但是原型中有,会返回true;
- hasOwnProperty():使用对象的hasOwnProperty()可以来检查对象自身是否含有某属性,仅当对象自身中含有相应属性时,才会返回true。
注意
- 原型对象也是对象,因此原型对象也有原型。
- 如果要使用一个对象的属性或者方法,首先会在自身中检索,自身中找不到就会向上检索,即原型对象中查找。