国产一区二区精品-国产一区二区精品久-国产一区二区精品久久-国产一区二区精品久久91-免费毛片播放-免费毛片基地

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁(yè)  >  技術(shù)干貨  > JS對(duì)象轉(zhuǎn)字符串的幾種方法

JS對(duì)象轉(zhuǎn)字符串的幾種方法

來(lái)源:千鋒教育
發(fā)布人:xqq
時(shí)間: 2023-11-23 00:03:12 1700668992

一、JSON.stringify方法

JSON.stringify方法是將一個(gè)javascript對(duì)象或值轉(zhuǎn)換成為一個(gè) JSON字符串。

使用方法如下:


  var obj = {
    name: 'Tom',
    age: 18,
    grade: {
      math: 90,
      english: 95
    },
    hobbies: ['reading', 'music']
  };
  var str = JSON.stringify(obj);
  console.log(str);

執(zhí)行結(jié)果為:


  {"name":"Tom","age":18,"grade":{"math":90,"english":95},"hobbies":["reading","music"]}

json字符串還可以通過(guò)JSON.parse方法轉(zhuǎn)換成js對(duì)象

代碼如下:


  var obj = JSON.parse(str);
  console.log(obj);

執(zhí)行結(jié)果為:


  {name: "Tom", age: 18, grade: {…}, hobbies: Array(2)}

二、Function方法

Function是js中的一個(gè)對(duì)象,它有一個(gè)toSource方法,可以把一個(gè)Function對(duì)象轉(zhuǎn)換成js代碼。如果把對(duì)象通過(guò)toSource方法轉(zhuǎn)為代碼,并去掉function(...)(){...}里的function和(),就可以得到這個(gè)對(duì)象的代碼形式。

使用方法如下:


  var obj = {
    name: 'Tom',
    age: 18,
    grade: {
      math: 90,
      english: 95
    },
    hobbies: ['reading', 'music']
  };
  var str = (function(){return this;}).call(obj).toSource();
  console.log(str);

執(zhí)行結(jié)果為:


  ({name:"Tom",age:18,grade:{math:90,english:95},hobbies:["reading","music"]})

三、eval方法

eval方法可以執(zhí)行一段字符串形式的js代碼,把一個(gè)js對(duì)象轉(zhuǎn)換成一個(gè)可執(zhí)行的js字符串,所以可以用eval方法直接把一個(gè)對(duì)象轉(zhuǎn)換成一個(gè)字符串。

使用方法如下:


  var obj = {
    name: 'Tom',
    age: 18,
    grade: {
      math: 90,
      english: 95
    },
    hobbies: ['reading', 'music']
  };
  var str = eval('(' + JSON.stringify(obj) + ')');
  console.log(str);

執(zhí)行結(jié)果為:


  {name: "Tom", age: 18, grade: {…}, hobbies: Array(2)}

四、toString方法

toString方法是Object對(duì)象的一個(gè)原型方法,可以將一個(gè)對(duì)象轉(zhuǎn)換成字符串。但是這個(gè)方法只能將一個(gè)對(duì)象轉(zhuǎn)換成"[object Object]"這種基本形式的字符串。

我們可以通過(guò)重寫Object對(duì)象的toString方法來(lái)實(shí)現(xiàn)對(duì)象轉(zhuǎn)字符串。

使用方法如下:


  Object.prototype.toString = function(){
    return JSON.stringify(this);
  }
  var obj = {
    name: 'Tom',
    age: 18,
    grade: {
      math: 90,
      english: 95
    },
    hobbies: ['reading', 'music']
  };
  console.log(obj.toString());

執(zhí)行結(jié)果為:


  {"name":"Tom","age":18,"grade":{"math":90,"english":95},"hobbies":["reading","music"]}

五、自定義方法

我們也可以通過(guò)自定義實(shí)現(xiàn)將一個(gè)js對(duì)象轉(zhuǎn)換成字符串。

示例代碼如下:


  function obj2str(obj, len){
    var ndeep = len || 1;
    var gap = ''; 
    var indent = ''; 
    var i = 0; 
    for(i = 0; i < ndeep; i++)
    {
      indent += ' ';
    }
    gap = ndeep > 1 ? '\n' : '';
    if(typeof obj === 'object')
    { 
      var str = '';
      if(obj.constructor === Array)
      { 
        for(i = 0; i < obj.length; i++)
        {
          str += gap + indent + obj2str(obj[i], ndeep + 1) + ', ';
        }
        return '[' + str.slice(0, -2) + '\n' + indent + ']';
      }
      else
      {
        for(var prop in obj)
        {
          str += gap + indent + '"' + prop + '": ';
          if(typeof obj[prop] === 'object')
          {
            str += obj2str(obj[prop], ndeep + 1) + ', ';
          }
          else if(typeof obj[prop] === 'function')
          {
            str += 'undefined' + ', ';
          }
          else
          {
            str += '"' + obj[prop] + '", ';
          }
        }
        return '{' + str.slice(0, -2) + '\n' + indent + '}';
      }
    } 
    else
    { 
      if(typeof obj === 'string')
      {
        obj = '"' + obj + '"';
      }
      return String(obj);
    }
  }

  var obj = {
    name: 'Tom',
    age: 18,
    grade: {
      math: 90,
      english: 95
    },
    hobbies: ['reading', 'music']
  };

  var str = obj2str(obj);
  console.log(str);

執(zhí)行結(jié)果為:


  {
   "name": "Tom", 
   "age": "18", 
   "grade": {
    "math": "90", 
    "english": "95"
   }, 
   "hobbies": [
    "reading", 
    "music"
   ]
  }

六、總結(jié)

以上是JS對(duì)象轉(zhuǎn)字符串的幾種方法,可以根據(jù)實(shí)際需要進(jìn)行選擇。需要注意的是,F(xiàn)unction和eval方法存在安全問(wèn)題,建議不要在生產(chǎn)環(huán)境中使用。

聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請(qǐng)您保持通訊暢通,專屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT