我有一些代码作为我正在处理的javascript周末项目的一部分。我的问题在最后一行。据我所知,我应该只能致电Floater.create()
,而不必致电Floater.prototype.create()
。为什么我需要额外的.prototype
?没有它,就会抛出错误:Floater() has no method "create"
function Floater(){}
Floater.prototype.create = function(){
//do stuff
}
$(document).ready(function(){
//do stuff
runStartup();
});
function runStartup(){
loginFloater = new Floater;
Floater.prototype.create();
// as far as I know, this should run as just Floater.create(),
// but that throws an error.
}
答案 0 :(得分:5)
这部分:
Floater.prototype.create = function(){
//do stuff
}
不会向Floater构造函数添加属性,而是向使用new Floater()
创建的实例的[[Prototype]]对象添加属性。因此,Floater实例将具有该方法,但构造函数不会。
您可能希望将启动功能更改为:
function runStartup(){
loginFloater = new Floater();
loginFloater.create();
}
但是,考虑到您的方法的名称,您可能还想完全删除create
,并直接从构造函数执行初始化操作:
function Floater(){
// init stuff here
}