基本數(shù)據(jù)類型基本包裝類型&三大對象&Math JSON內(nèi)置對象

基本數(shù)據(jù)類型包裝類型

基本數(shù)據(jù)類型:字符串類型 數(shù)據(jù)類型 布爾類型 空類型 未定義類型
通過字面量創(chuàng)建的基本數(shù)據(jù)類型的數(shù)據(jù)都是常量
常量特點:常量是不能被修改的,每次修改或拼接都是生成一個新的
但是可以用字符串方法replace修改

let str =" abc";
let newStr =str.replace("b","m");

基本類型特點:沒有屬性和方法
對象類型的特點:有屬性和方法
以前之所以能夠訪問基本數(shù)據(jù)類型的屬性和方法, 是因為
在運行的時候系統(tǒng)自動將基本數(shù)據(jù)類型包裝成了對象類型

let str = "www.baidu.com"
// let str =new String(str)
    常見的基本包裝類型 String() / Number() /J Boolean()

三大對象

在JavaScript中提供三種自帶的對象,分別是"本地對象" "內(nèi)置對象" "宿主對象"

宿主:就是指JavaScript運行環(huán)境,js可以在瀏覽器中運行,也可以在服務(wù)器上運行(nodejs)

本地對象:與宿主無關(guān),無論在瀏覽器還是服務(wù)器中都有的對象,就是ECMAScript標(biāo)準(zhǔn)中定義的類(構(gòu)造函數(shù)),在使用過程中需要我們手動new創(chuàng)建.例如:Boolean、Number耕姊、String教翩、Array、Function茬暇、Object、Date、RegExp等。
內(nèi)置對象:與宿主無關(guān),無論在瀏覽器還是服務(wù)器中都有的對象,ECMAScript已經(jīng)幫我們創(chuàng)建好的對象. 在使用過程中無需我們手動new創(chuàng)建.例如:Global篓冲、Math、JSON
宿主對象:對于嵌入到網(wǎng)頁中的JS來說,起宿主對象就是瀏覽器,所以宿主對象就是瀏覽器提供的對象,包含:Window和Document等.所有的DOM和BOM對象都屬于宿主對象
自定義對象:我們自己編寫的類創(chuàng)建的對象

Math內(nèi)置對象

         Math.floor()    向下取整 // 直接砍掉所有的小數(shù)位就是向下取整
         let num = 3.9;
         let value = Math.floor(num);
         console.log(value); //3
        Math.ceil()     向上取整 // 只要有小數(shù)位就會給整數(shù)位+1, 然后砍掉所有小數(shù)位
        let num = 3.9;
        let value = Math.ceil(num);
        console.log(value); //4
        Math.round()    四舍五入 // 和小學(xué)數(shù)學(xué)一樣, 如果小數(shù)位滿5就會進1
        let num = 3.5;
        let value = Math.round(num);
        console.log(value);//4
        Math.abs()      絕對值 // 和小學(xué)數(shù)學(xué)一樣, 統(tǒng)一變?yōu)檎龜?shù)
        let num = -3;
        let value = Math.abs(num);
        console.log(value); // 3
        Math.random()   生成隨機數(shù) // 會生成一個0~1的隨機數(shù), 但是不包括1
        let value = Math.random();
        console.log(value);
需求: 要求生成一個1~10的隨機數(shù)
function getRandomIntInclusive(min,max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min; //含最大值 最小值 
}
let value = getRandomIntInclusive(1,10);// MDN文檔
console.log(value);

JSON

JSON 格式(JavaScript Object Notation 的縮寫)是一種用于數(shù)據(jù)交換的文本格式宠哄,2001年由 Douglas Crockford 提出壹将,目的是取代繁瑣笨重的 XML 格式。

JSON 對值的類型和格式有嚴(yán)格的規(guī)定毛嫉。

  • 復(fù)合類型的值只能是數(shù)組或?qū)ο蟛t恰,不能是函?shù)、正則表達式對象狱庇、日期對象惊畏。
  • 簡單類型的值只有四種:字符串、數(shù)值(必須以十進制表示)密任、布爾值和null(不能使用NaN, Infinity, -Infinity和undefined)颜启。
  • 字符串必須使用雙引號表示,不能使用單引號浪讳。
  • 對象的鍵名必須放在雙引號里面缰盏。
  • 數(shù)組或?qū)ο笞詈笠粋€成員的后面,不能加逗號淹遵。

以下是合格的 JSON 值口猜。

["one", "two", "three"]

{ "one": 1, "two": 2, "three": 3 }

{"names": ["張三", "李四"] }

[ { "name": "張三"}, {"name": "李四"} ]

以下是不合格的 JSON 值。

{ name: "張三", 'age': 32 } // 屬性名必須使用雙引號

[32, 64, 128, 0xFFF] // 不能使用十六進制值

{ "name": "張三", "age": undefined } // 不能使用undefined

{ "name": "張三",
"birthday": new Date('Fri, 26 Aug 2011 07:13:10 GMT'),
"getName": function() {
return this.name;
}
} // 不能使用函數(shù)和日期對象
需要注意的是透揣,空數(shù)組和空對象都是合格的 JSON 值济炎,null本身也是一個合格的 JSON 值。

ES5 新增了JSON對象辐真,用來處理 JSON 格式數(shù)據(jù)须尚。它有兩個方法:JSON.stringify()和JSON.parse()
基本用法
JSON.stringify方法用于將一個值轉(zhuǎn)為字符串。該字符串符合 JSON 格式侍咱,并且可以被JSON.parse方法還原耐床。

JSON.stringify('abc') // ""abc""
JSON.stringify(1) // "1"
JSON.stringify(false) // "false"
JSON.stringify([]) // "[]"
JSON.stringify({}) // "{}"

JSON.stringify([1, "false", false])
// '[1,"false",false]'

JSON.stringify({ name: "張三" })
// '{"name":"張三"}'
上面代碼將各種類型的值,轉(zhuǎn)成 JSON 字符串楔脯。

需要注意的是撩轰,對于原始類型的字符串,轉(zhuǎn)換結(jié)果會帶雙引號昧廷。

JSON.stringify('foo') === "foo" // false
JSON.stringify('foo') === "\"foo\"" // true
上面代碼中堪嫂,字符串foo,被轉(zhuǎn)成了""foo""麸粮。這是因為將來還原的時候溉苛,雙引號可以讓 JavaScript 引擎知道,foo是一個字符串弄诲,而不是一個變量名愚战。

如果原始對象中,有一個成員的值是undefined齐遵、函數(shù)或 XML 對象寂玲,這個成員會被過濾。

var obj = {
  a: undefined,
  b: function () {}
};

JSON.stringify(obj) // "{}"
上面代碼中梗摇,對象obj的a屬性是undefined拓哟,而b屬性是一個函數(shù),結(jié)果都被JSON.stringify過濾伶授。

如果數(shù)組的成員是undefined断序、函數(shù)或 XML 對象流纹,則這些值被轉(zhuǎn)成null。

var arr = [undefined, function () {}];
JSON.stringify(arr) // "[null,null]"
上面代碼中违诗,數(shù)組arr的成員是undefined和函數(shù)漱凝,它們都被轉(zhuǎn)成了null。

正則對象會被轉(zhuǎn)成空對象诸迟。

JSON.stringify(/foo/) // "{}"
JSON.stringify方法會忽略對象的不可遍歷屬性茸炒。

JSON.parse()

JSON.parse方法用于將JSON字符串轉(zhuǎn)化成對象。

JSON.parse('{}') // {}
JSON.parse('true') // true
JSON.parse('"foo"') // "foo"
JSON.parse('[1, 5, "false"]') // [1, 5, "false"]
JSON.parse('null') // null

var o = JSON.parse('{"name": "張三"}');
o.name // 張三
如果傳入的字符串不是有效的JSON格式阵苇,JSON.parse方法將報錯壁公。

JSON.parse("'String'") // illegal single quotes
// SyntaxError: Unexpected token ILLEGAL
上面代碼中,雙引號字符串中是一個單引號字符串绅项,因為單引號字符串不符合JSON格式紊册,所以報錯。

深拷貝的另一種寫法

var obj = {
    name: 'hunger',
    age: 3,
    friends: ['aa', 'bb', 'cc']
}

var obj2 = JSON.parse(JSON.stringify(obj))
obj.age = 4
console.log(obj2.age)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末趁怔,一起剝皮案震驚了整個濱河市湿硝,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌润努,老刑警劉巖关斜,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異铺浇,居然都是意外死亡痢畜,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門鳍侣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來丁稀,“玉大人,你說我怎么就攤上這事倚聚∠呱溃” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵惑折,是天一觀的道長授账。 經(jīng)常有香客問我,道長惨驶,這世上最難降的妖魔是什么白热? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮粗卜,結(jié)果婚禮上屋确,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好攻臀,可當(dāng)我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布焕数。 她就那樣靜靜地躺著,像睡著了一般茵烈。 火紅的嫁衣襯著肌膚如雪百匆。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天呜投,我揣著相機與錄音,去河邊找鬼存璃。 笑死仑荐,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的纵东。 我是一名探鬼主播粘招,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼偎球!你這毒婦竟也來了洒扎?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤衰絮,失蹤者是張志新(化名)和其女友劉穎袍冷,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體猫牡,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡胡诗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了淌友。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片煌恢。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖震庭,靈堂內(nèi)的尸體忽然破棺而出瑰抵,到底是詐尸還是另有隱情,我是刑警寧澤器联,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布二汛,位于F島的核電站,受9級特大地震影響主籍,放射性物質(zhì)發(fā)生泄漏习贫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一千元、第九天 我趴在偏房一處隱蔽的房頂上張望苫昌。 院中可真熱鬧,春花似錦幸海、人聲如沸祟身。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽袜硫。三九已至氯葬,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間婉陷,已是汗流浹背帚称。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留秽澳,地道東北人闯睹。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像担神,于是被迫代替她去往敵國和親楼吃。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,713評論 2 354

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