您的代码有一些问题
1.initialiseWebGl()
将寻找在全局范围内声明的函数 -> 没有函数
- 你应该使用
this.initialiseWebGl()
来访问Objects Method
注:在这种情况下this
指的是InstanceRenderer
2.您没有分配函数,Renderer.prototype.initialiseWebGL()
而是尝试调用Renderer
s 原型方法initialiseWebGl
,这会给您一个错误,因为它没有定义
3.因为{
它们被向下移动了一行,所以它们被解释为一个块->此代码被执行。
如果你在你之后拥有它们,()
你会得到一个语法错误->
Renderer.prototype.initialiseWebGL() {...
会导致Uncaught SyntaxError: Unexpected token {
这是一个评论的例子
function Renderer() {
initialiseWebGL(); // I call the global declared function
this.initialiseShader(); //I call the Prototypes function
this.initialiseBuffer(); //Me too
}
Renderer.prototype.initialiseWebGL = function (){ //Here a function gets assigned to propertie of `Renderer`s `prototype` Object
//Do stuff.
};
Renderer.prototype.initialiseShader = function (){
console.log("Do Shader Stuff");
};
Renderer.prototype.initialiseBuffer = function (){
console.log("Do initialise stuff");
};
Renderer.prototype.initialiseBuffer() // I invoke the method above
{
console.log("I'm a Block statement");
};
function initialiseWebGL () { //I'm the global declared function
console.log("Global");
}
var ren1 = new Renderer();
/*"Do initialise stuff"
"I'm a Block statement"
"Global"
"Do Shader Stuff"
"Do initialise stuff"*/
正如您在控制台输出中看到的
这是一个JSBin