2018-06-01 原型对象

2018-06-07  本文已影响0人  忙于未来的民工

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

属性搜寻机制:

对象o在查找属性的时候,会首先在对象o上找,如果找不到就会通过__proto__这个属性查找o的构造函数的原型对象,如果的o的构造函数的原型对象上也没有找到,那么就会在o的构造函数的原型函数的构造函数的原型对象上查找,直到查找到null为止

上一篇下一篇

猜你喜欢

热点阅读