gpt4 book ai didi

javascript - 使用揭示原型(prototype)模式时出现 "Undefined is not a function"错误

转载 作者:行者123 更新时间:2023-11-29 18:08:35 26 4
gpt4 key购买 nike

我正在尝试在 JavaScript 文件中使用揭示原型(prototype)模式来封装两个相关函数的集合。但是当页面加载时,它会在调用 .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
}
}();

这可能是我的一些基本语法错误,如果重复,我深表歉意。为什么我会看到此错误以及如何修复它?谢谢。

最佳答案

看起来您在很多方面都错误地使用了原型(prototype)和函数实例的概念。

如果您希望能够访问原型(prototype),则需要使用 new 运算符实例化一个函数。

从您试图实现的目标来看:

var testProto1 = function () { };

// Create your methods in object notation within your prototype
testProto1.prototype.init = function () {
alert('init called');
};

现在如果你想调用它,你必须实例化它!

var proto1 = new testProto1();

// NOW you can call .init! Because the prototype was actually created

proto1.init(); // alerts 'init called!'

关于javascript - 使用揭示原型(prototype)模式时出现 "Undefined is not a function"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29478889/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com