0

我还有其他几个在我的代码中向 javascript 类添加原型的实例,它们工作得很好,但我无法弄清楚为什么我刚刚编写的部分拒绝工作。
有问题的部分是:

var opt = new Settings;

function Settings() {
    this.initjQuerySelectors();
    this.sorted_columns_url = this.getSortedColumnsUrl();
}

Settings.prototype.initjQuerySelectors = function() {
    this.data_store_selector = $('.data_store.display');
};

Settings.prototype.getSortedColumnsUrl = function() {
    return this.data_store_selector.val();
};

它会产生以下错误:

Uncaught TypeError: Object #<Settings> has no method 'initjQuerySelectors' 

当我试图捕捉错误时,它表示也没有任何方法getSortedColumnsUrl();

用chrome开发工具查看代码,发现我添加的设置原型中确实没有,问题是我不知道为什么。

任何帮助,将不胜感激。

4

1 回答 1

3

这可能是因为您错误地订购了代码,

尝试先定义原型,然后再实例化 opt 对象。

Settings.prototype.initjQuerySelectors = function() {
    this.data_store_selector = $('.data_store.display');
};

Settings.prototype.getSortedColumnsUrl = function() {
    return this.data_store_selector.val();
};

function Settings() {
    this.initjQuerySelectors();
    this.sorted_columns_url = this.getSortedColumnsUrl();
}

var opt = new Settings;

编辑:

在扩展它的原型之前定义函数以获得完整的跨浏览器支持。(感谢@Turnerj 修复)

于 2013-06-05T09:11:41.990 回答