我试图在JavaScript文件中使用显示原型模式来封装两个相关函数的集合。但是当页面加载时,它会在调用.init函数时返回以下错误:使用显示原型模式时出现“未定义不是函数”错误
“Uncaught TypeError:Undefined不是函数。”
这是我的标记模式。
<script>
$(function() {
testProto1.init();
testProto2.init();
});
</script>
这里是我的JavaScript文件中的模式。
var testProto1 = function() {
};
testProto1.prototype = function() {
var init = function() {
alert("init 1");
};
return {
init: init
}
}();
var testProto2 = function() {
};
testProto2.prototype = function() {
var init = function() {
alert("init 2");
};
return {
init: init
}
}();
这可能是我的一些基本的语法错误,如果它是重复的,我很抱歉。为什么我看到这个错误,我该如何解决?谢谢。
请描述你真正想要完成的事情。这段代码看起来有很多不同的方式,但我不确定你实际上想做什么,所以不知道该怎么建议。 'testProto1.init()'不起作用,因为'testProto1'构造函数没有'.init()'属性。 – jfriend00
@ jfriend00,我的意图是命名空间我正在使用的功能。一组函数处理网格,另一组处理数学计算。这种模式不是混合各种功能,而是将功能封装在逻辑单元下。 –
如果你只是想命名一些实际上不是实例化对象的方法的函数,那么你完全不使用原型。您只需将属性放在对象上并调用这些属性即可。 – jfriend00