有的時候,因為需要使用this,但是又被其他上下文給占用了,這時需要使用其他變量來代替this,如self(不成文的規矩而已).
function Person(name, age) {
this.name = name;
this.age = age;
self = this; // 這里在Safari, Firefox里能正常運行,但是在IE中會報錯,提示this未初始化
this.foo = function() {
var self = this; // 這里在Safari, Firefox, IE里都能正常運行.
setTimeout(function() {
alert(self.name); // 這里如果使用this.name會報錯
}, 1000);
}
}
服務器端返回JSON格式的字符串(無論是Servlet,JSP,還是PHP等)
"{name: \"your name\", age: 23}"
如果在瀏覽器端使用普通文本方式獲得此字符串,然后使用eval轉換成JSON對象,沒問題:
var jstr = "{name: \"your name\", age: 23}";
var obj = eval("(" + jstr + ")"); // 正常得到JSON對象,這里加上( 和 )是為了防止在一些瀏覽器里出錯.
但如使用jQuery的$.getJSON()想取得上面的字符串的JSON對象,不會報錯,但是也得不到JSON對象,必須把上面的屬性名也用引號引起來才能正常的得到JSON對象,如下格式:
"{\"name\": \"your name\", \"age\": 23}"
還有一個小問題,如your name這個字符串中有雙引號,在轉換成JSON對象時會出錯,所以事先最好把your name中的雙引號轉換成單引號,以防出錯。
function Person(name, age) {
this.name = name;
this.age = age;
self = this; // 這里在Safari, Firefox里能正常運行,但是在IE中會報錯,提示this未初始化
this.foo = function() {
var self = this; // 這里在Safari, Firefox, IE里都能正常運行.
setTimeout(function() {
alert(self.name); // 這里如果使用this.name會報錯
}, 1000);
}
}
服務器端返回JSON格式的字符串(無論是Servlet,JSP,還是PHP等)
"{name: \"your name\", age: 23}"
如果在瀏覽器端使用普通文本方式獲得此字符串,然后使用eval轉換成JSON對象,沒問題:
var jstr = "{name: \"your name\", age: 23}";
var obj = eval("(" + jstr + ")"); // 正常得到JSON對象,這里加上( 和 )是為了防止在一些瀏覽器里出錯.
但如使用jQuery的$.getJSON()想取得上面的字符串的JSON對象,不會報錯,但是也得不到JSON對象,必須把上面的屬性名也用引號引起來才能正常的得到JSON對象,如下格式:
"{\"name\": \"your name\", \"age\": 23}"
還有一個小問題,如your name這個字符串中有雙引號,在轉換成JSON對象時會出錯,所以事先最好把your name中的雙引號轉換成單引號,以防出錯。