JS原型与原型链
-
每个函数都有一个prototype属性,被称为显示原型
-
构造函数
-function Fn(){ } 大写表示构造函数
-
每个实例对象都有一个的__proto__属性,被称为隐式原型
-
每个函数都有constructor属性,指向他关联的构造函数
检测对象自身有没有属性的方法
hasOwnPrototype
isPrototype
- 检测某个属性是否在这个实例上,返回的布尔类型的值,有的话则返回true,否则是fasle
- 构造函数的原型prototype是由Object构造出来的
- constructor可以检测数据类型,但是不准确,容易被篡改
原型链
- 获取对象属性时,如果对象本身没有这个属性,那就会去他的原型__proto__上去找,如果还查不到,就去找原型的原型,一直找到最顶层(Object.prototype)为止。Object.prototype对象也有__proto__属性值为null。
-
对象必然有_proto_属性,但不一定有prototype;实例的对象通过_proto_属性连接到构造函数的prototype属性上。而原型链就是从这两者的关系开始一层一层
往下找的关系