观察对象的直接父类:
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
网友评论