2

我有这个脚本:

var Tord = (function () {

    Tord.prototype.getHeader = function () {
        alert('test');
    };

    return Tord;
})();

$(document).ready(function() {

    var tod = new Tord();
    tod.getHeader();
});

我收到错误Uncaught TypeError: Cannot read property 'prototype' of undefined第 3 行

我不明白为什么?

这是我的js文件的加载方式:

    <link rel="stylesheet" href="public/jquery.mobile/jquery.mobile-1.2.0.min.css" />
    <link rel="stylesheet" href="public/style.css" />
    <script src="public/jquery-1.8.3.min.js"></script>
    <script src="public/jquery.mobile/jquery.mobile-1.2.0.min.js"></script>
    <script type="text/javascript" charset="utf-8" src="public/cordova-2.2.0.js"></script>
    <script type="text/javascript" charset="utf-8" src="public/script.js"></script>

script.js有上面的脚本。

有任何想法吗?谢谢。

4

1 回答 1

8

因为正是您显示的代码。看,当这条线被调用时......

Tord.prototype.getHeader = function () {

... Tord未定义但是当你设置它时 Tord 应该是一个函数(因为它prototype应该是构造函数的一个属性以便有任何用途)——而且你根本没有努力让 Tord 成为一个函数。

我认为您想做的事情可以通过以下方式实现:

var Tord = (function () {
    var Tord = function() {}; // to properly name the constructor
    Tord.prototype.getHeader = function () {
        alert('test');
    };
    return Tord;
})();

有了这个,您可以根据一些外部逻辑定义不同的构造函数(但仍然定义一次)。但是在您的代码的当前状态下,没有必要让它变得那么复杂:这个......

var Tord = function() {};
Tord.prototype.getHeader = function() { ... };

......在我看来应该足够了。

于 2012-12-23T09:10:00.763 回答