在具有prototype属性的匿名对象上使用new?

Vir*_*721 4 javascript prototype class function object

我可不可以做 :

var foo = new Foo;
Run Code Online (Sandbox Code Playgroud)

用:

var Foo = { prototype : { } };
Run Code Online (Sandbox Code Playgroud)

正如我所做的那样:

var Foo = function() { };
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

Gol*_*den 5

不,你不能.

关键是prototype在这种情况下,属性是构造函数的属性Foo.如果使用文字语法创建对象,例如

var foo = { prototype: {} };
Run Code Online (Sandbox Code Playgroud)

您具有分配给对象的属性,而不是构造函数.

这是一个区别,因此在使用这个文字语法时,原型对象的自动查找将不起作用.

如果你想与原型工作,你HAVE使用构造函数的语法如下:

var Foo = function () {};
Foo.prototype.foo = 'bar';

var foo = new Foo();
console.log(foo.foo); // => 'bar'
Run Code Online (Sandbox Code Playgroud)

正如评论中所讨论的,如果您尝试使用constructor文字语法为对象分配属性,它也不起作用:它仅在使用真正的原型时才起作用.

希望这可以帮助.