js原型继承题目

var F = function(){};
Object.prototype.a = function(){};
Function.prototype.b = function(){};
var f = new F();
问:能否通过f取到方法a,方法b?

这里我画了一张图:

f是F的实例对象,实例对象继承构造函数原型对象,constructor属性是原型对象特有的,所以,f也具有contructor属性,f.constructor === F.prototype.constructor

而F.prototype.constructor === F。

可以看出f继承F.prototye,而F.prototype则继承Object.prototype,所以f继承了a方法,而取不到b方法;

但是F继承了Function.prototype,又向上继承了Obejct,所以继承a,也继承b;

constructor是每个原型对象拥有的属性,指向构造函数本身,题目中f是F的实例对象,实例对象继承原型对象属性,f.constructor === F.prototype.constructor

所以可以通过f.constructor.a获取a方法,f.constructor.b获取b方法,当然也可以直接f是可以直接调用a方法的。

PS:instanceof就是用来检测当前对象是否在原型链上的关键字

上面:f instanceof F   //true 

console.log('1',f.constructor === F)  //1 true
console.log('2',f.__proto__ === F.prototype)  //2 true
console.log('3',F.prototype.__proto__ === Object.prototype)  //3 true
console.log('4',F.constructor === Function)   //4  true
console.log('5',F.__proto__ === Function.prototype)   //5 true
console.log('6',Function.prototype.__proto__ === Object.prototype)  //6 true
console.log('7',f.a === Object.prototype.a)   //7 true
console.log('8',f.constructor.a === Object.prototype.a)   //8 true
console.log('9',f.constructor.b === Function.prototype.b)   //9 true

  

【完】

应无所住而生其心    ——《金刚经》

 

转载于:https://www.cnblogs.com/tangjiao/p/9908345.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值