JS對象和JQuery對象的轉換,JS內容轉換爲json格式

 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); 

相關文章
相關標籤/搜索