在学习认识面向对象的过程中,能够深刻的认识和理解原型链是非常重要的。通过原型链能更好的帮助我们加深对面向对象的了理解。
继承
了解几种常见的继承模式
原型链
原型链的基本概念
- 对象之间通过proto属性为纽带,形成一种连锁的上下级关系,这种关系仿佛就像是一个链条,我们把这种关系链条称之为原型链
- 原型链的顶端:所有对象通过无数次的proto的查找,最终都会找到某个对象,这个对象就是Object.prototype,我么就把这个对象称为原型链的顶端;而这个原型链的顶端对象proto属性的值是null
- 任何对象都是有proto属性的,一般都是指向他们的构造函数的原型
对象字面量的原型链
- 所有的对象字面量都是Object构造函数的实例
- 创建一个对象字面量相当于:new Object()
- Object.prototype是原型链的顶端
构造函数创建对象的原型链
- 通过构造函数的方式创建函数
一些属性和方法
hasOwnProperty
- 功能:判断属性是否为该对象的私有属性,而不是继承的得到的。
isPrototypeOf
- 功能: 判断参数对象是否直接继承或者间接继承自该对象,如果有继承关系那么结果为true,否则结果为false
- 代码:12345function Person(){}var p1=new Person();console.log(Person.prototype.isPrototypeOf(p1));//trueconsole.log(Object.prototype.isPrototypeOf(Person.prototype));//true——>Person.prototype直接继承Object.prototypeconsole.log(Object.prototype.isPrototypeOf(p1));//true
propertyIsEnumerable
- 功能:检测某个属性是否是对象的自有属性并且可以使用for…in遍历
instanceof
- 功能:检测某个对象是否另一对象的实例对象,返回的是一个布尔值