一些 JavaScript 中的代碼小技巧

JSON.stringify

JSON.stringify(value[, replacer [, space]])

參數(shù):

  1. value:將要被序列化的變量的值枫夺。

  2. replacer:替代器⊙可以是函數(shù)或者是數(shù)組冬殃。

    1. 函數(shù)時(shí):value 每個(gè)屬性都要經(jīng)過這個(gè)函數(shù)的處理霎烙,該函數(shù)的返回值就是最后被序列化后的值碑韵。

    2. 數(shù)組時(shí):要求該數(shù)組的元素是字符串赡茸,且這些元素會(huì)被當(dāng)做 value 的鍵(key)進(jìn)行匹配,最后序列化的結(jié)果祝闻,是只包含該數(shù)組每個(gè)元素為 key 的值占卧。

  3. space:指定輸出數(shù)值的代碼縮進(jìn),美化格式之用联喘,可以是數(shù)字(<= 10)或者字符串华蜒。

eg:

// 使用“函數(shù)”當(dāng)替代器
function replacer(key, value) {
  if (typeof value === "string") {  // value 為字符串的不返回
    return undefined;
  }
  return value;
}

var foo = {
  foundation: "Mozilla", 
  model: "box", 
  week: 45, 
  transport: "car", 
  month: 7
};
var jsonString = JSON.stringify(foo, replacer);

// {"week":45,"month":7}

// 使用“數(shù)組”當(dāng)替代器
const user = {
  name: 'zollero',
  nick: 'z',
  skills: ['JavaScript', 'CSS', 'HTML5']
};
JSON.stringify(user, ['name', 'skills'], 2);  // 僅僅匹配key值為'name'、'skills'的值

// "{
//   "name": "zollero",
//   "skills": [
//     "JavaScript",
//     "CSS",
//     "HTML5"
//   ]
// }"

****注意****

如果一個(gè)對(duì)象有 toJSON 屬性豁遭,當(dāng)它被序列化的時(shí)候叭喜,不會(huì)對(duì)該對(duì)象進(jìn)行序列化,而是將它的toJSON 方法的返回值進(jìn)行序列化蓖谢。

eg:

var obj = {
  foo: 'foo',
  toJSON: function () {
    return 'bar';
  }
};
JSON.stringify(obj);      // '"bar"'
JSON.stringify({x: obj}); // '{"x":"bar"}'

用 Set 來實(shí)現(xiàn)數(shù)組去重

Set 和 ...(拓展運(yùn)算符)可以很簡單的進(jìn)行數(shù)組去重捂蕴。

eg:

const removeDuplicateItems = arr => [...new Set(arr)];
removeDuplicateItems([42, 'foo', 42, 'foo', true, true]);
//=> [42, "foo", true]

函數(shù)參數(shù)值校驗(yàn)

通過 ES6 中為函數(shù)增加參數(shù)默認(rèn)值的特性來做函數(shù)參數(shù)值的校驗(yàn)

eg:

function fix(a = require()) {
  console.log('a', a)
}
function require() {
  throw new Error('缺少了參數(shù) a')
}

fix(1);
// a 1
fix();
// Uncaught Error: 缺少了參數(shù) a

用解構(gòu)賦值過濾對(duì)象屬性

使用 ES6 中的 解構(gòu)賦值 和 拓展運(yùn)算符 的特性來過濾屬性

eg:

// 我們想過濾掉對(duì)象 types 中的 inner 和 outer 屬性
const { inner, outer, ...restProps } = {
  inner: 'This is inner',
  outer: 'This is outer',
  v1: '1',
  v2: '2',
  v4: '3'
};
console.log(restProps);
// { v1: "1", v2: "2", v4: "3" }

Object.is

ES6 中提供了一個(gè)新的方法:Object.is(),它具有 === 的一些特點(diǎn)蜈抓,而且更好启绰、更準(zhǔn)確昂儒。


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末沟使,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子渊跋,更是在濱河造成了極大的恐慌腊嗡,老刑警劉巖着倾,帶你破解...
    沈念sama閱讀 217,185評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異燕少,居然都是意外死亡卡者,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門客们,熙熙樓的掌柜王于貴愁眉苦臉地迎上來崇决,“玉大人,你說我怎么就攤上這事底挫『闵担” “怎么了?”我有些...
    開封第一講書人閱讀 163,524評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵建邓,是天一觀的道長盈厘。 經(jīng)常有香客問我,道長官边,這世上最難降的妖魔是什么沸手? 我笑而不...
    開封第一講書人閱讀 58,339評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮注簿,結(jié)果婚禮上契吉,老公的妹妹穿的比我還像新娘。我一直安慰自己诡渴,他們只是感情好栅隐,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評(píng)論 6 391
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著玩徊,像睡著了一般租悄。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上恩袱,一...
    開封第一講書人閱讀 51,287評(píng)論 1 301
  • 那天泣棋,我揣著相機(jī)與錄音,去河邊找鬼畔塔。 笑死潭辈,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的澈吨。 我是一名探鬼主播把敢,決...
    沈念sama閱讀 40,130評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼谅辣!你這毒婦竟也來了修赞?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,985評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤桑阶,失蹤者是張志新(化名)和其女友劉穎柏副,沒想到半個(gè)月后勾邦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,420評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡割择,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評(píng)論 3 334
  • 正文 我和宋清朗相戀三年眷篇,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片荔泳。...
    茶點(diǎn)故事閱讀 39,779評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蕉饼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出玛歌,到底是詐尸還是另有隱情椎椰,我是刑警寧澤,帶...
    沈念sama閱讀 35,477評(píng)論 5 345
  • 正文 年R本政府宣布沾鳄,位于F島的核電站慨飘,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏译荞。R本人自食惡果不足惜瓤的,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望吞歼。 院中可真熱鬧圈膏,春花似錦、人聲如沸篙骡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽糯俗。三九已至尿褪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間得湘,已是汗流浹背杖玲。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留淘正,地道東北人摆马。 一個(gè)月前我還...
    沈念sama閱讀 47,876評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像鸿吆,于是被迫代替她去往敵國和親囤采。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容