为什么函数包装未隐藏在javascript中未调用的函数对象中

为什么函数包装未隐藏在javascript中未调用的函数对象中,javascript,Javascript,我将JavaScript函数作为对象: function hexMesh(){ var side=25; console.log('hexMesh'); function drawOver(){ } } 正如您所看到的,它有一个函数调用drawOver 我尝试使用构造函数调用它,如下所示: window.onload = function() { hexMeshObj=new hexMesh(); hexMeshObj.drawOv

我将JavaScript函数作为对象:

function hexMesh(){
     var side=25;
     console.log('hexMesh');

     function drawOver(){
     }
}  
正如您所看到的,它有一个函数调用
drawOver

我尝试使用构造函数调用它,如下所示:

window.onload = function() {
    hexMeshObj=new hexMesh();
    hexMeshObj.drawOver();
}
但它给我的错误是,
undefined不是一个函数

现在我知道我可以在对象的原型中声明函数,但我不想这样做


现在它打开了。

你不能像那样使用JavaScript

解决方案:使用类式原型(请不要将它们视为类,尽管它们提供继承)

编辑: 或者(尽管原型方法更好,因为它提供了真实的


另一种方法是,如果需要,可以使用绑定上下文。

可以提供一些信息,说明为什么使用原型优于第二种方法。添加了参考资料。谢谢你的建议。我正在寻找另一种方法,我知道我可以使用prototype来实现,但我不希望函数出现在对象的原型中,因为在我的例子中它没有意义,ThanksI添加了关于绑定的信息。您可以使用bind(this)实现相同的上下文(即上下文的范围)。另一方面,这个问题不是重复的,因为它没有严格按照参考问题的设置方式要求oop。
var x = function(v){ this.test = v; } // This is your constructor
x.prototype.show = function(){ console.log("TEST", this.test); } // This is a prototype with this as a context

var y = new x(true);
y.show(); // Logs TEST true
var x = function(v){
var context = this;
this.test = v;
this.show = function(){
    console.log('test', context.test)
});