为什么原型的属性没有在javascript对象中显示为portoype属性?

时间:2015-04-19 09:19:11

标签: javascript

我有以下代码:

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"}
  1. 此处构造函数A只有一个属性a,而A的原型有一个属性b。那么为什么obj会返回{a: "a", b: "b"}b属性在原型中,因此它应该在__porto_ property中。
  2. 为什么Function原型属性未显示在__porto__ object中的obj属性中。因为它是__porto__对象的父原型,因此应为obj

1 个答案:

答案 0 :(得分:1)

关于你问题的第二部分,这是因为行

var a = new A();

也可以写成:

var a = Object.create(A.prototype);
A.call(a);

您可以看到Function.prototype没有创建任何对象。

关于第一部分 - 你在哪种环境中获得这种行为? obj应该包含{a: "a"}