如何在javascript中分配__proto__的值?

时间:2017-08-08 10:49:31

标签: javascript inheritance prototype proto

最近我一直在玩javaScript原型对象,并在下面举例说明。

function Foo(){ 

}

Foo.prototype=null;

var fooObj=new Foo();

当我从开发人员工具查看fooObj时,__proto__属性指向全局Object的原型,我可以访问Object的原型对象中定义的所有属性和函数。应该指向Foo函数的原型对象,因为我已经为它指定了null,我期望__proto__将指向null,指向__proto__可能更有意义,但我想了解它的价值在创建对象后将其分配给__proto__?是什么导致它指向对象的原型对象?

我见过很多关于原型和原型的问题,但没有一个能解决我的疑问。

1 个答案:

答案 0 :(得分:1)

the specification *中的完整详细信息,但当您使用null prototype属性的构造函数时,new会分配Object.prototype(嗯,领域的默认原型;我们的目的是Object.prototype)作为新对象的原型。

我认为创建没有原型的对象的唯一方法是Object.create(null)

通过null创建对象后,您可以原型设置为Object.setPrototypeOf,但一般来说,最好避免更改对象&#39你创建它之后的原型。

*具体来说,它隐藏在GetPrototypeFromConstructor中,它表示构造函数prototype属性的类型是否为对象(为此目的,{ {1}}类型为Null,而不是类型Object),使用领域的默认原型。