1:理解原型函数
原型函数就是只要创建了一个函数,那么根据一组特殊的规则创建一个prototype属性,这个prototype属性就是原型对象,原型对象有一个constructor属性指向构造函数本身,这个原型只会有一个constructor属性,其他的属性和方法都是从Object继承而来的.
当使用构造函数创建了一个实例的时候,这个实例会有一个指针指向原型对象,这个指针就是[[Prototype]],在Firefox、Safari 和 Chrome 中这个指针就是__proto__,只有在这三个浏览器中是可见的
虽然__proto__是不可访问的,但是可以通过方法访问到
isPrototypeOf(): 这个方法可以判断对象之间是否有关系,
原型对象.isPrototypeOf(实例对象)
例子:
var person1 = new Person()
Person.prototype.isPrototypeOf(person1) // true
Object.getPrototypeOf(): 这个方法可以得到实例对象的原型对象
Object.getPrototypeOf(person1) === Person.prototype // true
hasOwnProperty(): 这个方法可以检测一个属性是存在于实例中,还是存在于原型中,在实例中返回true
in 这个操作符也是查询属性是否存在于对象上,只不过这个属性无论是在实例上还是在原型上,都是返回true
属性搜寻机制:
网友评论