关于Function原型对象和Object原型对象的一些疑惑
程序员文章站
2022-06-21 22:17:26
网上有一道美团外卖的面试题是这样的:Function.prototype.a = 'a';Object.prototype.b = 'b';function Person(){};var p = new Person();console.log('p.a: '+ p.a); // p.a: undefinedconsole.log('p.b: '+ p.b); // p.b: b......
网上有一道美团外卖的面试题是这样的:
Function.prototype.a = 'a';
Object.prototype.b = 'b';
function Person(){};
var p = new Person();
console.log('p.a: '+ p.a); // p.a: undefined
console.log('p.b: '+ p.b); // p.b: b
问为什么?
有不少同学第一眼看上去就觉得很疑惑,p不是应该继承了Function原型里面的属性吗,为什么p.a返回值是undefined呢?
其实,只要仔细想一想就很容易明白了,Person函数才是Function对象的一个实例,所以通过Person.a可以访问到Function
原型里面的属性,但是new Person()返回来的是一个对象,它是Object的一个实例,是没有继承Function的,所以无法访问
Function原型里面的属性。但是,由于在js里面所有对象都是Object的实例,所以,Person函数可以访问到Object原型里面的
属性,Person.b => 'b'
本文地址:https://blog.csdn.net/farmwang/article/details/85986737
上一篇: Ffmpeg+Node.js+jsmpeg网络视频服务器安装
下一篇: 起重机吊鸡毛歇后语