原型链面试题
2020-08-16 本文已影响0人
jluemmmm
function Parent(){
this.a = 'Parent'
}
function Tom() {
this.a = 'Tom'
}
Parent.__proto__.print = function(){
console.log(this.a)
}
Parent.print()
Tom.print()
var child = new Parent()
child.print()
// undefined
// undefined
// Uncaught TypeError: child.print is not a function
Parent
和Tom
都是Function
的实例,因此相当于在Function.prototype
上面挂载了一个print
方法,因此Parent.print()
可以调用到这个方法,但是没有返回值,一个原因是 Parent
方法没有执行,一个是因为this
此时指向的是Parent
,Parent
方法上没有a
属性,而child
本身是基于构造函数创建了一个对象,child.__proto__.__proto__ === Object.prototype
,因此在其原型链上找不到print
方法。
instanceof
构造函数的属性是否出现在某个实例的原型链上isPrototypeOf
测试一个对象是否在另一个对象的原型链上hasOwnProperty
判断一个对象自身属性中是否有某个属性getPrototypeOf
返回指定对象的原型