原型链
概念:基于原型对象的继承使得不同构造函数的原型对象关联在一起,并且这种关联的关系是一种链状的结构,我们将原型对象的链状结构关系称为原型链
原型链-查找规则:
1.当访问一个对象的属性或方法时,首先要查找这个对象自身有没有该属性
2.如果没有就查找他的原型(也就是 __proto__ 指向的 原型对象)
3.如果还没有就查找 原型对象 的 原型 (Object的原型对象)
4.依次类推一直找到 Object 为止 (null)
5.__proto__ 对象原型的意义就在于为对象成员查找机制提供一个方向,或者说一条路线
6.可以使用 instanceof 运算符用于检测构造函数的 prototype 属性是否出现在实例对象的原型链上
原型链图示:
原型链图示:来源于pink老师
instanceof 运算符
instanceof 运算符 :检测实例对象是否在某条原型链上
语法:实例对象 instanceof 构造函数
参数: object(某个实例对象) constructor(某个构造函数)
返回值: true(实例在原型链上) false(实例不在原型链上)
代码模块展示:
<script>
// instanceof 运算符 检测该实例是否在某条原型链上
// 语法:实例对象 instanceof 构造函数
// 参数: object(某个实例对象) constructor(某个构造函数)
// 返回值: true(实例在原型链上) false(实例不在原型链上)
console.log([1, 2, 3] instanceof Array) // true
console.log({ name: 'zhangsan', age: 15 } instanceof Object) // true
console.log([1, 2, 3] instanceof Object) // true
console.log({name: 'zhangsan', age: 15} instanceof Array) // false
</script>