重學(xué)前端 筆記

鏈接:https://time.geekbang.org/column/intro/154
(一HTML語義)
這里我們可以介紹一下 em 標(biāo)簽。

今天我吃了一個<em>蘋果</em>劈猿。
今天我吃了<em>一個</em>蘋果拙吉。

章 - 回顯示


<h1>HTML語義</h1>
<p>balah balah balah balah</p>
<h2>弱語義</h2>
<p>balah balah</p>
<h2>結(jié)構(gòu)性元素</h2>
<p>balah balah</p>
......

h1-h6 是最基本的標(biāo)題,它們表示了文章中不同層級的標(biāo)題揪荣。有些時候筷黔,我們會有副標(biāo)題,為了避免副標(biāo)題產(chǎn)生額外的一個層級仗颈,我們使用 hgroup 標(biāo)簽佛舱。


<hgroup>
<h1>JavaScript對象</h1>
<h2>我們需要模擬類嗎?</h2>
</hgroup>
<p>balah balah</p>
......

從 HTML 5 開始挨决,我們有了 section 標(biāo)簽请祖,這個標(biāo)簽可不僅僅是一個“有語義的 div”,它會改變 h1-h6 的語義凰棉。section 的嵌套會使得其中的 h1-h6 下降一級损拢,因此,在 HTML5 以后撒犀,我們只需要 section 和 h1 就足以形成文檔的樹形結(jié)構(gòu):


<section>
    <h1>HTML語義</h1>
    <p>balah balah balah balah</p>
    <section>
        <h1>弱語義</h1>
        <p>balah balah</p>
    </section>
    <section>
        <h1>結(jié)構(gòu)性元素</h1>
        <p>balah balah</p> 
    </section>
......
</section>

作為整體結(jié)構(gòu)的語義類標(biāo)簽


<body>
    <header>
        <nav>
            ……
        </nav>
    </header>
    <aside>
        <nav>
            ……
        </nav>
    </aside>
    <section>……</section>
    <section>……</section>
    <section>……</section>
    <footer>
        <address>……</address>
    </footer>
</body>

article 是一種特別的結(jié)構(gòu)福压,它表示具有一定獨(dú)立性質(zhì)的文章掏秩。所以,article 和 body 具有相似的結(jié)構(gòu)荆姆,同時蒙幻,一個 HTML 頁面中,可能有多個 article 存在胆筒。一個典型的場景是多篇新聞?wù)故驹谕粋€新聞專題頁面中邮破,這種類似報(bào)紙的多文章結(jié)構(gòu)適合用 article 來組織。
article 是一種特別的結(jié)構(gòu)仆救,它表示具有一定獨(dú)立性質(zhì)的文章抒和。所以,article 和 body 具有相似的結(jié)構(gòu)彤蔽,同時摧莽,一個 HTML 頁面中,可能有多個 article 存在顿痪。一個典型的場景是多篇新聞?wù)故驹谕粋€新聞專題頁面中镊辕,這種類似報(bào)紙的多文章結(jié)構(gòu)適合用 article 來組織。

body 里面有自己的 header 和 footer蚁袭,然后里面是豎篇的 article征懈,每一個 article 里面都有自己的 header、section揩悄、footer卖哎。這是一個典型的多文章結(jié)構(gòu)。在這個結(jié)構(gòu)里删性,我們看到了一些新標(biāo)簽棉饶,我也來逐個介紹一下。header镇匀,如其名照藻,通常出現(xiàn)在前部,表示導(dǎo)航或者介紹性的內(nèi)容汗侵。footer幸缕,通常出現(xiàn)在尾部,包含一些作者信息晰韵、相關(guān)鏈接发乔、版權(quán)信息等。header 和 footer 一般都是放在 article 或者 body 的直接子元素雪猪,但是標(biāo)準(zhǔn)中并沒有明確規(guī)定栏尚,footer 也可以和 aside,nav只恨,section 相關(guān)聯(lián)(header 不存在關(guān)聯(lián)問題)译仗。aside 表示跟文章主體不那么相關(guān)的部分抬虽,它可能包含導(dǎo)航、廣告等工具性質(zhì)的內(nèi)容纵菌。aside 很容易被理解為側(cè)邊欄阐污,實(shí)際上二者是包含關(guān)系,側(cè)邊欄是 aside咱圆,aside 不一定是側(cè)邊欄笛辟。aside 和 header 中都可能出現(xiàn)導(dǎo)航(nav 標(biāo)簽),二者的區(qū)別是序苏,header 中的導(dǎo)航多數(shù)是到文章自己的目錄手幢,而 aside 中的導(dǎo)航多數(shù)是到關(guān)聯(lián)頁面或者是整站地圖。最后 footer 中包含 address忱详,這是個非常容易被誤用的標(biāo)簽弯菊。address 并非像 date 一樣,表示一個給機(jī)器閱讀的地址踱阿,而是表示“文章(作者)的聯(lián)系方式”,address 明確地只關(guān)聯(lián)到 article 和 body钦铁。
(二 如何運(yùn)用語義類標(biāo)簽來呈現(xiàn)Wiki網(wǎng)頁)

類型轉(zhuǎn)換


image.png

裝箱轉(zhuǎn)換每一種基本類型 Number软舌、String、Boolean牛曹、Symbol 在對象中都有對應(yīng)的類佛点,所謂裝箱轉(zhuǎn)換,正是把基本類型轉(zhuǎn)換為對應(yīng)的對象黎比,它是類型轉(zhuǎn)換中一種相當(dāng)重要的種類超营。前文提到,全局的 Symbol 函數(shù)無法使用 new 來調(diào)用阅虫,但我們?nèi)钥梢岳醚b箱機(jī)制來得到一個 Symbol 對象演闭,我們可以利用一個函數(shù)的 call 方法來強(qiáng)迫產(chǎn)生裝箱。我們定義一個函數(shù)颓帝,函數(shù)里面只有 return this米碰,然后我們調(diào)用函數(shù)的 call 方法到一個 Symbol 類型的值上,這樣就會產(chǎn)生一個 symbolObject购城。我們可以用 console.log 看一下這個東西的 type of吕座,它的值是 object,我們使用 symbolObject instanceof 可以看到瘪板,它是 Symbol 這個類的實(shí)例吴趴,我們找它的 constructor 也是等于 Symbol 的,所以我們無論從哪個角度看侮攀,它都是 Symbol 裝箱過的對象:

/** 裝箱*/
var symbolObject = (function(){ return this; }).call(Symbol("a"));   
console.log(typeof symbolObject); //object   
console.log(symbolObject instanceof Symbol); //true    
console.log(symbolObject.constructor == Symbol); //true

var symbolObject = Object(Symbol("a")); console.log(typeof symbolObject); //object console.log(symbolObject instanceof Symbol); //true console.log(symbolObject.constructor == Symbol); //true

   var symbolObject = Object(Symbol("a"));

   console.log(Object.prototype.toString.call(symbolObject)); //[object Symbol]

/拆箱*/
在 JavaScript 標(biāo)準(zhǔn)中锣枝,規(guī)定了 ToPrimitive 函數(shù)厢拭,它是對象類型到基本類型的轉(zhuǎn)換(即,拆箱轉(zhuǎn)換)惊橱。對象到 String 和 Number 的轉(zhuǎn)換都遵循“先拆箱再轉(zhuǎn)換”的規(guī)則蚪腐。通過拆箱轉(zhuǎn)換,把對象變成基本類型税朴,再從基本類型轉(zhuǎn)換為對應(yīng)的 String 或者 Number回季。拆箱轉(zhuǎn)換會嘗試調(diào)用 valueOf 和 toString 來獲得拆箱后的基本類型。如果 valueOf 和 toString 都不存在正林,或者沒有返回基本類型泡一,則會產(chǎn)生類型錯誤 TypeError。


    var o = {
        valueOf : () => {console.log("valueOf"); return {}},
        toString : () => {console.log("toString"); return {}}
    }

    o * 2
    // valueOf
    // toString
    // TypeError

我們定義了一個對象 o觅廓,o 有 valueOf 和 toString 兩個方法鼻忠,這兩個方法都返回一個對象,然后我們進(jìn)行 o2 這個運(yùn)算的時候杈绸,你會看見先執(zhí)行了 valueOf帖蔓,接下來是 toString,最后拋出了一個 TypeError瞳脓,這就說明了這個拆箱轉(zhuǎn)換失敗了塑娇。到 String 的拆箱轉(zhuǎn)換會優(yōu)先調(diào)用 toString。我們把剛才的運(yùn)算從 o2 換成 String(o)劫侧,那么你會看到調(diào)用順序就變了埋酬。
···

var o = {
    valueOf : () => {console.log("valueOf"); return {}},
    toString : () => {console.log("toString"); return {}}
}

String(o)
// toString
// valueOf
// TypeError
···
在 ES6 之后,還允許對象通過顯式指定 @@toPrimitive Symbol 來覆蓋原有的行為烧栋。
···

var o = {
    valueOf : () => {console.log("valueOf"); return {}},
    toString : () => {console.log("toString"); return {}}
}

o[Symbol.toPrimitive] = () => {console.log("toPrimitive"); return "hello"}


console.log(o + "")
// toPrimitive
// hello

···

image.png

JavaScript 對象的特征
對象具有唯一標(biāo)識性:即使完全相同的兩個對象写妥,也并非同一個對象。
對象有狀態(tài):對象具有狀態(tài)审姓,同一對象可能處于不同狀態(tài)之下珍特。
對象具有行為:即對象的狀態(tài),可能因?yàn)樗男袨楫a(chǎn)生變遷魔吐。

    var o1 = { a: 1 };
    var o2 = { a: 1 };
    console.log(o1 == o2); // false

對 JavaScript 來說次坡,屬性并非只是簡單的名稱和值,JavaScript 用一組特征(attribute)來描述屬性(property)画畅。先來說第一類屬性砸琅,數(shù)據(jù)屬性。它比較接近于其它語言的屬性概念轴踱。數(shù)據(jù)屬性具有四個特征症脂。
value:就是屬性的值。
writable:決定屬性能否被賦值。
enumerable:決定 for in 能否枚舉該屬性诱篷。
configurable:決定該屬性能否被刪除或者改變特征值
第二類屬性是訪問器(getter/setter)屬性壶唤,它也有四個特征。getter:函數(shù)或 undefined棕所,在取屬性值時被調(diào)用闸盔。setter:函數(shù)或 undefined,在設(shè)置屬性值時被調(diào)用琳省。enumerable:決定 for in 能否枚舉該屬性迎吵。configurable:決定該屬性能否被刪除或者改變特征值。

如果所有對象都有私有字段[[prototype]]针贬,就是對象的原型击费;讀一個屬性,如果對象本身沒有桦他,則會繼續(xù)訪問對象的原型蔫巩,直到原型為空或者找到為止。

這個模型在 ES 的各個歷史版本中并沒有很大改變快压,但從 ES6 以來圆仔,JavaScript 提供了一系列內(nèi)置函數(shù),以便更為直接地訪問操縱原型蔫劣。三個方法分別為:Object.create 根據(jù)指定的原型創(chuàng)建新對象坪郭,原型可以是 null;Object.getPrototypeOf 獲得一個對象的原型拦宣;Object.setPrototypeOf 設(shè)置一個對象的原型。


image.png

image.png
image.png

在 JavaScript 中信姓,我們把不帶控制能力的語句稱為普通語句鸵隧。普通語句有下面幾種。聲明類語句var 聲明const 聲明let 聲明函數(shù)聲明類聲明表達(dá)式語句空語句debugger 語句這些語句在執(zhí)行時意推,從前到后順次執(zhí)行(我們這里先忽略 var 和函數(shù)聲明的預(yù)處理機(jī)制)豆瘫,沒有任何分支或者重復(fù)執(zhí)行邏輯。普通語句執(zhí)行后菊值,會得到 [[type]] 為 normal 的 Completion Record外驱,JavaScript 引擎遇到這樣的 Completion Record,會繼續(xù)執(zhí)行下一條語句腻窒。這些語句中昵宇,只有表達(dá)式語句會產(chǎn)生 [[value]],當(dāng)然儿子,從引擎控制的角度瓦哎,這個 value 并沒有什么用處。如果你經(jīng)常使用 Chrome 自帶的調(diào)試工具,可以知道蒋譬,輸入一個表達(dá)式割岛,在控制臺可以得到結(jié)果,但是在前面加上 var犯助,就變成了 undefined癣漆。Chrome 控制臺顯示的正是語句的 Completion Record 的[[value]]。


image.png

image.png

image.png

image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末剂买,一起剝皮案震驚了整個濱河市惠爽,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌雷恃,老刑警劉巖疆股,帶你破解...
    沈念sama閱讀 221,888評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異倒槐,居然都是意外死亡旬痹,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評論 3 399
  • 文/潘曉璐 我一進(jìn)店門讨越,熙熙樓的掌柜王于貴愁眉苦臉地迎上來两残,“玉大人,你說我怎么就攤上這事把跨∪斯” “怎么了?”我有些...
    開封第一講書人閱讀 168,386評論 0 360
  • 文/不壞的土叔 我叫張陵着逐,是天一觀的道長崔赌。 經(jīng)常有香客問我,道長耸别,這世上最難降的妖魔是什么健芭? 我笑而不...
    開封第一講書人閱讀 59,726評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮秀姐,結(jié)果婚禮上慈迈,老公的妹妹穿的比我還像新娘。我一直安慰自己省有,他們只是感情好痒留,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,729評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蠢沿,像睡著了一般伸头。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上舷蟀,一...
    開封第一講書人閱讀 52,337評論 1 310
  • 那天熊锭,我揣著相機(jī)與錄音弧轧,去河邊找鬼。 笑死碗殷,一個胖子當(dāng)著我的面吹牛精绎,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播锌妻,決...
    沈念sama閱讀 40,902評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼代乃,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了仿粹?” 一聲冷哼從身側(cè)響起搁吓,我...
    開封第一講書人閱讀 39,807評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎吭历,沒想到半個月后堕仔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,349評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡晌区,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,439評論 3 340
  • 正文 我和宋清朗相戀三年摩骨,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片朗若。...
    茶點(diǎn)故事閱讀 40,567評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡恼五,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出哭懈,到底是詐尸還是另有隱情灾馒,我是刑警寧澤,帶...
    沈念sama閱讀 36,242評論 5 350
  • 正文 年R本政府宣布遣总,位于F島的核電站睬罗,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏旭斥。R本人自食惡果不足惜容达,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,933評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望琉预。 院中可真熱鬧董饰,春花似錦蒿褂、人聲如沸圆米。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽娄帖。三九已至,卻和暖如春昙楚,著一層夾襖步出監(jiān)牢的瞬間近速,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留削葱,地道東北人奖亚。 一個月前我還...
    沈念sama閱讀 48,995評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像析砸,于是被迫代替她去往敵國和親昔字。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,585評論 2 359

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