jQuery對象轉成DOM對象:
兩種轉換方式將一個jQuery對象轉換成DOM對象:[index]和.get(index);
(1)jQuery對象是一個數據對象,能夠經過[index]的方法,來獲得相應的DOM對象。
如:var $v =$("#v") ; //jQuery對象
var v=$v[0]; //DOM對象
alert(v.checked) //檢測這個checkbox是否被選中
(2)jQuery自己提供,經過.get(index)方法,獲得相應的DOM對象
如:var $v=$("#v"); //jQuery對象
var v=$v.get(0); //DOM對象
alert(v.checked) //檢測這個checkbox是否被選中json
DOM對象轉成jQuery對象:
對於已是一個DOM對象,只須要用$()把DOM對象包裝起來,就能夠得到一個jQuery對象了。$(DOM對象)
如:var v=document.getElementById("v"); //DOM對象
var $v=$(v); //jQuery對象
轉換後,就能夠任意使用jQuery的方法了。 瀏覽器
---------------------------------------------------JS轉換爲JSON---------------------------------------------------------------------this
1,eval方式解析,恐怕這是最先的解析方式了。以下
function strToJson(str){
var json = eval('(' + str + ')');
return json;
}
記得別忘了str兩旁的小括號。 prototype
2,new Function形式,比較怪異哦。以下
function strToJson(str){
var json = (new Function("return " + str))();
return json;
} 對象
3,使用全局的JSON對象,以下:
function strToJson(str){
return JSON.parse(str);
} 繼承
使用JSON.parse需嚴格遵照JSON規範,如屬性都需用引號引發來,以下
var str = '{name:"jack"}';
var obj = JSON.parse(str); // --> parse error 字符串
name沒有用引號引發來,使用JSON.parse全部瀏覽器中均拋異常,解析失敗。get
IE8/Firefox3.5+/Chrome4/Safari4/Opera10 已實現該方法。使用方式很簡單:
var str = '{"name":"jack"}';
var json = JSON.parse(str);
alert(json.name); io
在以上實現該方法的瀏覽器中都會彈出「jack」。 function
若是給Object.prototype添加一個解析json的方法(某人可能會強烈反對這麼幹污染了原生對象,這裏純粹爲了討論)
Object.prototype.parseJSON = function () {
return JSON.parse(this);
}
由於全部的對象都繼承了Object的方法,這時候能夠直接這麼用了,
var str = '{"name":"jack"}';
var json = str.parseJSON();
alert(json.name);
str.parseJSON()時,parseJSON內部的this就指向了str。這時候並不是全部瀏覽器都能解析成功。
IE8/Firefox/Safari/Opera仍然會彈出「jack」,Chrome中則報錯了:Uncaught illegal access。
爲何這樣寫Chrome就不支持呢?比較兩種方式,傳給JSON.parse的參數一個是字符串str,一個是this。貌似這兩個沒區別?
當str.parseJSON()時,parseJSON內部的this指向了應該就是str。修改下parseJSON方法:
Object.prototype.parseJSON = function () {
alert(typeof this);
return JSON.parse(this);
};
從新執行,能夠發現parseJSON彈出的是object,可能這就是區別了。直接new一個字符串就能看到明顯的效果了
var js = JSON.parse(new String('{"name":"jack"}'));
alert(js.name);
以上代碼除Chrome報錯外,其它瀏覽器均執行正常。 基本得出結論: Chrome中,JSON.parse的第一個參數只能是字符串,不能是對象(包括new String方式也不支持) 再回到上面給Object.prototype添加一個解析json的方法,若是要兼容全部瀏覽器,能夠這麼寫: Object.prototype.parseJSON = function () { return JSON.parse(this.toString()); } var str = '{"name":"jack"}'; var json = str.parseJSON(); alert(json.name);