我已經實例化了JavaScript 對象「用戶」。它包含用戶管理所需的全部內容。即使加載和可能的AJAX錯誤在這裏管理。 下面是這個對象的快照。JavaScript - 基於原型的編程 - this.myFunction不是函數錯誤
var User = function(uid, ajaxURL) {
this.uid = uid;
this.ajaxURL = ajaxURL;
};
User.prototype = {
loadingShow: function (tag) {
this.tag = (tag) ? tag : '.tab-pane';
$(this.tag + ' .loading').html('<img src="img/template/loading.gif" alt="Loading..." title="Loading...">').fadeIn('fast');
},
//...
};
User.prototype.loadAction = function (rel) {
var utls = new User();
var relAttr = rel;
$.ajax({
type: 'POST',
url: this.ajaxURL + '&id=' + parseInt(this.uid),
cache: true,
dataType: 'json',
data: {
toDo: relAttr
},
beforeSend:function(){
utls.loadingShow('#' + relAttr + '-tab');
},
//...
它工作正常,但我只是一個問題,也許愚蠢,但我面臨的第一次JavaScript OOP和基於原型的編程。
爲什麼我必須創建var utls = new User();
調用這個utls.loadingShow(
而不是簡單地通過this.loadingShow(
來調用它? 使用this
屬性我獲得了錯誤「TypeError:this.loadingShow不是函數」。
您可以發佈'loadAction'方法的其餘部分,特別是調用'$ .ajax'之後的部分嗎? – Tibos
我編輯帖子,因爲你需要:) Thx –
你不必創建一個新的,你只需要瞭解範圍。在ajax函數裏,thisArg不再指向User對象,而是指向窗口或jQuery ajax或其他東西。您可以使用Function.bind或將thisArg存儲在ajax函數作用域之外。或者我猜根據庫克怪獸的回答,有一個你可以使用的上下文屬性:P – rlemon