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)
?
谢谢你的帮助.
不,你不能.
关键是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文字语法为对象分配属性,它也不起作用:它仅在使用真正的原型时才起作用.
希望这可以帮助.