继承

2019-03-27  本文已影响0人  ?尛孞

观察对象的直接父类:

1.window对象继承

Object -> EventTarget(显式原型) -> WindowProperties(隐式原型) -> Window

2.document对象继承

Object -> EventTarget(显式原型) -> Node(显式原型) -> Document

注意:显示原型可以通过是可以通过Object.prototype访问的,也就是说可以通过构造函数直接访问;而隐式原型不能,隐式原型只能通过Object.prototype.__proto__去访问,无法通过构造函数直接访问,这里浏览器会抛出错

console.log(Function.prototype.__proto__ == )

这里贴一段instanceof运算符的内部实现原理:

function instance_of(L, R) {//L 表示左表达式,R 表示右表达式

 var O = R.prototype;// 取 R 的显示原型

 L = L.__proto__;// 取 L 的隐式原型

 while (true) {

   if (L === null)

     return false;

   if (O === L)// 这里重点:当 O 严格等于 L 时,返回 true

     return true;

   L = L.__proto__;

 }

}

继承的几种方式:

1.原型链

2.借用构造函数

3.组合继承

4.原型式继承

5.寄生式继承

6.寄生组合式继承

https://www.ibm.com/developerworks/cn/web/1306_jiangjj_jsinstanceof/index.html

上一篇 下一篇

猜你喜欢

热点阅读