得到"未定义不是函数“;使用显示原型图案时出错
Getting "Undefined is not a function" error when using the Revealing Prototype Pattern
我试图在JavaScript文件中使用Revearing Prototype Pattern来封装两个相关函数的集合。但是当页面加载时,它在调用.init函数时返回以下错误:
"未捕获类型错误:未定义不是函数。"
这是我的标记模式。
<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
}
}();
这可能是我的一些基本语法错误,如果是重复的,我深表歉意。为什么我看到这个错误,我该如何修复它?谢谢
看起来您正在使用原型的概念&函数实例在很多方面都不正确。
如果您希望能够访问原型,则需要使用new
运算符instantiate
一个函数。
从你试图实现的目标来看:
var testProto1 = function () { };
// Create your methods in object notation within your prototype
testProto1.prototype.init = function () {
alert('init called');
};
现在,如果你想调用这个,你必须instantiate
它!
var proto1 = new testProto1();
// NOW you can call .init! Because the prototype was actually created
proto1.init(); // alerts 'init called!'
您可以从该对象的实例访问原型的属性,因此这将起作用:
var a=new testProto1();
a.init();
如果你想从testProto1访问init函数,你必须写:
testProto1.prototype.init();
所以你的代码看起来像:
$(function () {
testProto1.prototype.init();
testProto2.prototype.init();
});
相关文章:
- 从桌面读取python文件时高亮显示代码
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 如何在生成下载文件时显示加载动画
- React重新渲染但未显示正确的组件
- 得到"未定义不是函数“;使用显示原型图案时出错
- AngularJS ng repeat显示原型函数未定义
- 为什么浏览器显示原型属性不同
- 如何在原型js中将DIV从显示无到阻止进行动画处理
- 向对象原型添加函数会导致函数显示在所有“OBJ 中的 X”循环中
- 显示原型模式不适用于 Array
- 为什么控制台在原型中将 e.explicitOriginalTarget.value 显示为在粘贴或剪切事件上设置.js
- Chrome显示截断的对象原型名称
- 谷歌地图API -自定义原型标记图像从今天开始不显示
- 节点v0.10.36显示一个对象的原型
- 如何添加名称空间来显示原型模式
- 为什么原生数据类型属性没有显示在相应的原型上
- 如何使用原型隐藏和显示信息
- Javascript原型更改没有显示在实例中
- 显示javascript原型链
- 是什么导致原型变量在使用“for in”时显示