Javascript Prototype需要.prototype.为什么?

Ert*_*ohl 0 javascript jquery prototype

我有一些代码作为我正在进行的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.
}
Run Code Online (Sandbox Code Playgroud)

bfa*_*tto 5

这部分:

Floater.prototype.create = function(){
    //do stuff
}
Run Code Online (Sandbox Code Playgroud)

不会向Floater构造函数添加属性,而是向使用创建的实例的[[Prototype]]对象添加属性new Floater().因此,Floater实例将具有该方法,但构造函数不会.

您可能希望将启动功能更改为:

function runStartup(){
    loginFloater = new Floater();
    loginFloater.create();
}
Run Code Online (Sandbox Code Playgroud)

但是,给定您的方法的名称,您也可能想要create完全删除,并直接从构造函数执行初始化操作:

function Floater(){
    // init stuff here
}
Run Code Online (Sandbox Code Playgroud)