首先Function的显示原型prototype和隐式原型__proto__都是同一个 也就是说 构造函数和实例都是他自己 然后Function的原型的隐式原型是Object的显示原型

发布时间 2023-11-16 12:20:37作者: 龙陌

下列说法正确的是()

A
每个JS对象一定对应一个原型对象,并从原型对象继承属性和方法

B
对象的__proto__指向自己构造函数的prototype

C
Object.prototype. proto=== null,说明原型链到Object.prototype终止

D
表达式 Function.prototype.proto.proto === null 的运行结果为true

正确答案:BCD

A选项
如果是使用Object.create(null)创建的空对象,是没有对应原型对象的,所以这个答案不够严谨!

B选项
// 对于我来说答案改成这样会好理解点: 对象的_proto_指向构造自己的函数的prototype
function foo() {};
var a = new foo();
console.log(a.proto, foo.prototype);

C选项
Object已经没有对应的原型了

D选项

首先Function的显示原型prototype和隐式原型__proto__都是同一个 也就是说 构造函数和实例都是他自己 然后Function的原型的隐式原型是Object的显示原型 所以D是对的

Function原型是一个Object实例,他的__proto__指向Object的原型,Object的原型的__proto__为null

因为
Function.prototype.proto === Object.prototype // true
Object.prototype.proto === null // true
所以
Function.prototype.proto.proto === null // true