lesson23-JS里的對(duì)象

一固翰、 全局對(duì)象

在ES標(biāo)準(zhǔn)里收厨,全局對(duì)象是global围俘,在瀏覽器里是window,因?yàn)闉g覽器的實(shí)現(xiàn)比標(biāo)準(zhǔn)要早。

1. 常用的全局API
ES標(biāo)準(zhǔn) 瀏覽器私有
paseInt() alert(彈窗提示)
paseFloat() prompt(用戶填寫)
Number() comfirm(確認(rèn))
String() console(開發(fā)者使用)
Boolean() document(文檔)DOM
Object() history(瀏覽器)BOM

二界牡、簡(jiǎn)單類型與對(duì)象的區(qū)別

1. Number()

(1). Number()的兩種用法
  • Number('1')將括號(hào)內(nèi)的值轉(zhuǎn)換成Number類型

  • var n = new Number(1)生成一個(gè)Number對(duì)象

(2). var n = 1 與 var n = new Number(1)的區(qū)別:

圖1

var n = 1生成的是一個(gè)簡(jiǎn)單類型簿寂,而var n = new Number(1)生成的是一個(gè)對(duì)象。
var n = 1; n.toString()之所以生效宿亡,是因?yàn)樵趫?zhí)行n.xxx的時(shí)候常遂,會(huì)將基本類型的1轉(zhuǎn)換成一個(gè)對(duì)象的1(臨時(shí)變量),并調(diào)用該臨時(shí)變量里的屬性挽荠。
圖2
\

2. String

定義String的兩種方式:

  • var s = 'afdssafd';

  • var s = new String('safdsafdsa')克胳。

(1). String常用的api
  • s.charAt(n) 獲取第n位的值,等價(jià)于s[n]

  • s.charCodeAt(n) 獲取第n位字符的unicode編碼

  • s.charCodeAt(n).toString(16) 獲取第n位字符的Unicode編碼圈匆,并轉(zhuǎn)換成16進(jìn)制

  • s.trim()去掉字符串兩邊的空格

  • s1.concat(s2)連接兩個(gè)字符串

  • s.slice(n1, n2) 獲取字符串n1~n2的片段(左閉右開漠另,不包括右邊)

3.Boolean()

定義Boolean的兩種方式:

  • var b = true

  • var b = new Boolean(true)

坑:

var b = new Boolean(false)

if (b) {
  console.log('helloWorld')
}
//打印出helloWorld

以上代碼之所以會(huì)打印,是因?yàn)?code>var b = new Boolean(false)是一個(gè)對(duì)象跃赚,所有對(duì)象轉(zhuǎn)換成Boolean時(shí)都是true笆搓。

4. Object()

定義對(duì)象的兩種方法:

  • var o1 = {}

  • var o2 = new Object()

if (o1 === o2)是false,因?yàn)閷?duì)象是否相等比較的stack內(nèi)存中的地址纬傲,兩個(gè)指向不同堆內(nèi)存的對(duì)象自然是不相等的满败。

三、 公用屬性

1. 公用屬性來源于__proto__

在以下代碼中叹括,對(duì)象o1并沒有定義toString()函數(shù)算墨,但是仍能調(diào)用,是因?yàn)樵趧?chuàng)建一個(gè)對(duì)象時(shí)汁雷,默認(rèn)會(huì)繼承一個(gè)__proto__屬性净嘀,這個(gè)屬性指向公用的對(duì)象屬性,里面包含toString()摔竿。

var o1 = new Object()
o1.name = 'Mike'
o1.age = 18
o1.toString()
2. 對(duì)象內(nèi)proto的指向
圖1
  • 無論創(chuàng)建多少個(gè)Object面粮,它們的__proto__指向的都是同一個(gè)公用屬性。
圖2
var o1 = new Object()
var o2 = new Object()

if (o1 === o2) //false继低,因?yàn)閛1與o2存儲(chǔ)的地址是不一樣的

if(o1.toString === o2.toString) //true熬苍,因?yàn)閛1與o2的__proto__指向的是同一個(gè)公共屬性。
  • 基本類型與Object的proto指向圖
圖3
圖4
var n = new Number(1)
n.__proto__ === Number.prototype //true
n.__proto__.__proto__ === Object.prototype //true

var s = new String("hello")
s.__proto__ === String.prototype //true
s.__proto__.__proto__ === Object.prototype //true

var b = new Boolean(false)
b.__proto__ === Boolean.prototype //true
b.__proto__.__proto__ === Object.prototype //true

var o = new Object()
o.__proto__ === Object.prototype //true
3. 不寫代碼就有prototype

當(dāng)一個(gè)堆內(nèi)存沒有被引用時(shí)袁翁,就會(huì)被回收柴底。公用屬性就已經(jīng)存在,是因?yàn)闉g覽器在初始化時(shí)就創(chuàng)建了全局對(duì)象window粱胜,它里面的Number String 等屬性的prototype屬性引用了公用屬性柄驻。如下圖:

圖5

四、__proto__prototype

精髓:
var 對(duì)象 = new 函數(shù)()=>對(duì)象.__proto__ === 函數(shù).prototype
注意:
Object.__proto__ === Function.prototype
Object.prototype.__proto__ === null
Function.__proto__ === Function.prototype

image.png
image.png
var obj = { name: 'Mike'}
obj.toString === Object.prototype.toString //true
obj.toString === Object.toString //false

推導(dǎo)過程(運(yùn)用對(duì)象.__proto__ === 函數(shù).prototype):

obj.__proto__ === Object.prototype
obj.toString === obj.__proto__.toString
obj.toString === Object.prototype.toString

Object.__proto__ === Function.prototype
Object.toString === obj.__proto__.toString
Object.toString === Function.prototype.toString
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末焙压,一起剝皮案震驚了整個(gè)濱河市鸿脓,隨后出現(xiàn)的幾起案子抑钟,更是在濱河造成了極大的恐慌,老刑警劉巖野哭,帶你破解...
    沈念sama閱讀 216,591評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件在塔,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡拨黔,警方通過查閱死者的電腦和手機(jī)蛔溃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來篱蝇,“玉大人贺待,你說我怎么就攤上這事×憬兀” “怎么了麸塞?”我有些...
    開封第一講書人閱讀 162,823評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長瞻润。 經(jīng)常有香客問我喘垂,道長,這世上最難降的妖魔是什么绍撞? 我笑而不...
    開封第一講書人閱讀 58,204評(píng)論 1 292
  • 正文 為了忘掉前任正勒,我火速辦了婚禮,結(jié)果婚禮上傻铣,老公的妹妹穿的比我還像新娘章贞。我一直安慰自己,他們只是感情好非洲,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評(píng)論 6 388
  • 文/花漫 我一把揭開白布鸭限。 她就那樣靜靜地躺著,像睡著了一般两踏。 火紅的嫁衣襯著肌膚如雪败京。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,190評(píng)論 1 299
  • 那天梦染,我揣著相機(jī)與錄音赡麦,去河邊找鬼。 笑死帕识,一個(gè)胖子當(dāng)著我的面吹牛泛粹,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播肮疗,決...
    沈念sama閱讀 40,078評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼晶姊,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了伪货?” 一聲冷哼從身側(cè)響起们衙,我...
    開封第一講書人閱讀 38,923評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤钾怔,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后砍艾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蒂教,經(jīng)...
    沈念sama閱讀 45,334評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡巍举,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評(píng)論 2 333
  • 正文 我和宋清朗相戀三年脆荷,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片懊悯。...
    茶點(diǎn)故事閱讀 39,727評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蜓谋,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出炭分,到底是詐尸還是另有隱情桃焕,我是刑警寧澤,帶...
    沈念sama閱讀 35,428評(píng)論 5 343
  • 正文 年R本政府宣布捧毛,位于F島的核電站观堂,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏呀忧。R本人自食惡果不足惜师痕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望而账。 院中可真熱鬧胰坟,春花似錦、人聲如沸泞辐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽咐吼。三九已至吹缔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間锯茄,已是汗流浹背厢塘。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留撇吞,地道東北人俗冻。 一個(gè)月前我還...
    沈念sama閱讀 47,734評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像牍颈,于是被迫代替她去往敵國和親迄薄。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評(píng)論 2 354

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

  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些閱讀 2,029評(píng)論 0 2
  • 全局對(duì)象 windowECMAScript 規(guī)定全局對(duì)象叫做 global煮岁,但是瀏覽器把 window 作為全局對(duì)...
    半齋閱讀 452評(píng)論 0 0
  • 1 Object 對(duì)象 教程:https://wangdoc.com/javascript/stdlib/obje...
    智勇雙全的小六閱讀 1,736評(píng)論 0 0
  • 懂得拒絕讥蔽,活得不糾結(jié)涣易。
    丹77還在閱讀 156評(píng)論 0 0
  • 關(guān)鍵詞:健康/家人/親子教育/自我提升 目標(biāo):健康、社會(huì)資本冶伞、自我提升 1新症、健康:頸椎操已做,半小時(shí) 2响禽、社會(huì)資本...
    勇敢的每一天閱讀 109評(píng)論 0 0