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

【完】

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

js原型继承题目的更多相关文章

  1. 【09-23】js原型继承学习笔记

    js原型继承学习笔记 function funcA(){ this.a="prototype a"; } var b=new funcA(); b.a="object a ...

  2. JS原型继承与类的继承

    我们先看JS类的继承 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> &l ...

  3. js原型继承四步曲及原型继承图

    一:js原型继承四步曲 //js模拟类的创建以及继承 //动物(Animal),有头这个属性,eat方法 //名字这个属性 //猫有名字属性,继承Animal,抓老鼠方法 //第一步:创建父类 fun ...

  4. JS原型继承和类式继承

    前言 一个多月前,卤煮读了一篇翻译过来的外国人写的技术博客.此君在博客中将js中的类(构造)继承和原型继承做了一些比较,并且得出了结论:建议诸位在开发是用原型继承.文中提到了各种原型继承的优点,详细的 ...

  5. 关于js原型继承

    js的每个类都有一个prototype对象 访问对象的属性时,会先访问到对象自身是否有定义这个属性 如果没有定义,就会去访问对象所属类型的prototype对象是否有此属性 原型继承就是把类型的pro ...

  6. js原型继承

    原型链: Object(构造函数) object(类型(对象)) var o = {}; alert(typeof o); //结果是object alert(typeof Object); //结果 ...

  7. js原型继承深入

    js采用原型继承来实现类的派生,但是原型链再深入点,我们又知道多少呢,现在不妨往下看: 先来一个原型继承: var M1 = function() { this.param = "m1's ...

  8. 前端面试题总结二(js原型继承)

    今天这篇文章整理了JS原型和继承的一些知识点,面试的时候  基!本!都!会!问!还不快认真阅读下文,看看你还有哪些知识点需要掌握吧~ 1.原型链 基本思想:利用原型让一个引用类型继承另外一个引用类型的 ...

  9. JS 原型继承的几种方法

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

随机推荐

  1. Nginx 反向代理,IP、端口,项目路径变化的问题

    这两天在云上部署公司项目,涉及到nginx反向代理,在部署完成测试,发现在下载文件的时候,无法下载,提示链接被拒绝. 假设nginx代理地址: http://121.53.21.188:9012/we ...

  2. Tricks of Android's GUI

    Tricks of Android's GUI */--> Tricks of Android's GUI 1 layoutweight In LinearLayout, the default ...

  3. CAD安装错误1625:系统策略禁止这个安装,请与系统管理员联系。

    在安装Autodesk CAD/3DMAX/Maya/Revit/Inventor等的时候,出现“安装错误1625:系统策略禁止这个安装,请与系统管理员联系.”,或是Error 1625,同时还会提示 ...

  4. Witness组件详解

  5. [LC] 7. Reverse Integer

    Given a 32-bit signed integer, reverse digits of an integer. Example 1: Input: 123 Output: 321 Examp ...

  6. cashier|gasoline|reservoir

    N-COUNT 出纳(员);收银员A cashier is a person who customers pay money to or get money from in places such a ...

  7. python3之scrapy数据存储问题(MySQL)

    这次我用的是python3.6,scrapy在python2.7,3.5的使用方法都不同所以要特别注意, 列如 在python3.5的开发环境下scrapy 的主爬虫文件可以使用 from urlli ...

  8. spring给予XML配置的声明式事务

    步骤: 1.添加aop.tx命名空间声明: 2.配置事务管理器: 3.配置增强: 4.配置aop 具体xml设置如下: <?xml version="1.0" encodin ...

  9. POJ 3678 2-SAT

    题意:有n个顶点里面可以放数字1或0,给m个限制,每个限制给出两个顶点编号和两编号内数字运算后的结果 思路:很直接的2-SAT,每个点分为1和0两种情况,按限制要求建边,跑tarjan然后判断点是否在 ...

  10. DBCP + C3P0 连接池

    DBCP 配置参数如下: 参数 默认值 可选值 格式 说明 username       用户名 password       密码 url       数据库连接url driverClassNam ...