我想要獲得一個處理JavaScript和原型(不是庫)來創建一個可重用的腳本,最終將輸出一個很好的格式化的數據庫中的數據表。我可以使用jQuery AJAX以JSON格式獲取數據,並生成沒有問題的表。理想情況下,它會被排序和分頁,這就是麻煩開始的地方。使用javascript原型鏈接點擊後數據的持久性
我已經嘗試了一些構建方法,但似乎使用javascript的原型是我想要的,如果我正確地理解它。我似乎誤解(至少)是當用戶通過單擊鏈接或按鈕來採取行動時的數據持久性。
下面是我自己製作的說明這個問題很短:
http://jsfiddle.net/Scopique/yrt3krn9/
//Uses jQuery 1.11.0 because IE
var Outside = function() {
this.MyVariable = 'Hi';
this.PersistVariables = 'Oops';
}
Outside.prototype.GenerateHTML = function() {
var that = this;
//Value pops as expected
alert(that.PersistVariables);
var localHTML = "<a href='#' id='link' onclick='Outside.prototype.Respond(\"" + that.MyVariable + "\");'>Click Me</a>";
$("#output").html(localHTML);
}
Outside.prototype.Respond = function (whatVariable) {
var that = this;
alert(whatVariable);
//Value does not pop...
alert(that.PersistVariables);
}
$(document).ready(function() {
var out = new Outside();
out.GenerateHTML();
});
而且超出了但只是:
<div id="output"></div>
在這個例子中,值當Outside.prototype.Respond通過點擊在運行時添加到DIV的鏈接觸發時,MyVariable是可見的,因爲它通過p明確地傳遞定義的過程,構建HTML並作爲參數傳遞給方法。
但是,當調用Respond時,PersistVariables始終返回爲undefined。它在構造函數中被分配了一個值,並且當GenerateHTML被調用時它會顯示正確的值 - 一個自然的執行流,我假設 - 但是在鏈接被點擊後,Respond中的值不被理解。
我可以問「我錯過了什麼」,但我懷疑這並不那麼簡單:D我想正確訪問作用域的變量嗎?如果是這樣,關於點擊鏈接的鏈接是什麼,導致他們在鏈接點擊後失去主意。
謝謝!
該代碼的問題在於'this'引用了調用對象。用'window.alert'或'alert'調用警報alert中的'this'的值將是窗口。調用'Outside.prototype.Respond'時,Respond中'this'的值將是Outside.prototype而不是Outside的實例。你應該注意你的大小寫;構造函數通常以大寫字母開頭,但不作爲構造函數使用的函數不會。這裏的原型的更多信息:http://stackoverflow.com/a/16063711/1641941 – HMR