有的时候,因为需要使用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中的双引号转换成单引号,以防出错。