我有以下代码:
function A(){
this.a='a'
}
A.prototype.b='b';
Function.prototype.m='m';
现在我正在创建类型A
和控制台
var obj=new A();
console.log(obj)//it return {a: "a", b: "b"}
A
只有一个属性a
,而A的原型有一个属性b
。那么为什么obj
会返回{a: "a", b: "b"}
。 b
属性在原型中,因此它应该在__porto_ property中。Function
原型属性未显示在__porto__
object中的obj
属性中。因为它是__porto__
对象的父原型,因此应为obj
。 答案 0 :(得分:1)
关于你问题的第二部分,这是因为行
var a = new A();
也可以写成:
var a = Object.create(A.prototype);
A.call(a);
您可以看到Function.prototype
没有创建任何对象。
关于第一部分 - 你在哪种环境中获得这种行为? obj应该包含{a: "a"}