Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 国产亚洲精品美女久久久,国产精品久久久久久,91热视频在线

          整合營銷服務(wù)商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          HTML基礎(chǔ)教程:類了解一下

          HTML基礎(chǔ)教程:類了解一下

          TML 類

          對 HTML 進行分類(設(shè)置類),使我們能夠為元素的類定義 CSS 樣式。

          為相同的類設(shè)置相同的樣式,或者為不同的類設(shè)置不同的樣式。

          下面是一個例子

          <html>
          <head>
          <style>
          .a {
           background-color:black;
           color:white;
           margin:20px;
           padding:20px;
          }	
          </style>
          </head>
          <body>
          <div class="a">
          <h2>標題</h2>
          <p>內(nèi)容第一段,天華信息教育,歡迎關(guān)注我,我會和大家分享你想知道的.</p>
          <p>內(nèi)容第二段,天華信息教育,歡迎關(guān)注我,我會和大家分享你想知道的.</p>
          </div> 
          </body>
          </html>
          

          HTML基礎(chǔ)教程: 類了解一下

          圖是一至六級標題.HTML代碼是怎么樣的?(自學示例1)

          一級標題至六級標題

          標題標簽表示一段文字的標題或主題,并支持多層的內(nèi)容結(jié)構(gòu)。例如一級標題采用<h1>,二級標題采用<h2>,其他級別標題以此類推。HTML共提供了六級標題 <h1>~<h6>.并賦予了標題一定的外觀,所有標題字體加粗,<h1>最大<h6>最小。

          通過使用WebStorm工具,代碼如下

          <!DOCTYPE html>
          <html lang="en">
          <head>
              <meta charset="UTF-8">
              <title>不同等級的標題標簽對比</title>
          </head>
          <body>
          <h1>頭條號</h1>
          <h2>頭條號</h2>
          <h3>頭條號</h3>
          <h4>頭條號</h4>
          <h5>頭條號</h5>
          <h6>頭條號</h6>
          </body>
          </html>

          是不是很簡單,自己操作試一下吧。

          這里的<html lang="en">可以理解為我編輯的這個頁面是英文的。Chrome之類的瀏覽器會提示是否需要翻譯。

          階高級前端系列——JavaScript的"類"和繼承

          近期似乎總是能在各種場合聽到"程序員中年危機"這種言論,說是程序員到了35歲就會很難跳槽,很容易被優(yōu)化等等。其實在今年疫情影響下各行各業(yè)經(jīng)濟都不景氣,公司手里沒錢肯定要節(jié)省成本,35歲的人一般對工資的要求比較高,所以對這種比較高級的程序員需求就會降低。當然除此之外肯定也有其他大家都在說的原因,例如精力不如畢業(yè)生,沒有年輕人能加班能干活,不能走入管理崗的中年人就會被淘汰等等。

          其實個人感覺,雖然國內(nèi)環(huán)境比較浮躁,但是渴望高級技術(shù)人才的公司還是大有人在,打開招聘軟件還是能找到不少高級前端的招聘信息。到了中年靠的應該是自己的經(jīng)驗和技術(shù),去做一些更加高級的事情。既然做了開發(fā)這一行,我想大家大部分都是想專心做一些技術(shù)工作,少一些應酬和虛與委蛇,但是不可否認的是,隨著vue、react等等這種非常強大的框架普及,大部分程序員做的都是一些"最沒技術(shù)含量的技術(shù)",簡單地復制粘貼,查找官方文檔照著寫,很少再去關(guān)心技術(shù)細節(jié),時間久了自然會被淘汰。

          啰嗦了這么多,其實也是說給自己聽的,要做高級的事情就要離開自己的舒適區(qū),去鉆研一些高級的事情。

          今天就一起討論一下JavaScript的"類"和繼承。

          如果你想用JavaScript做一些高級的事情,例如打造組件庫,封裝插件,一定離不開"類"和繼承,這是"封裝"里無法繞過的一環(huán)。

          為什么要給"類"加上引號呢?

          因為JavaScript的世界里根本沒有類,所有你見到的類,包括ES6里的新語法class,都不是真正的類,JavaScript是徹頭徹尾的,純粹到極致的面向?qū)ο笳Z言,一切皆對象。

          我勸你最好暫時忘了之前接觸過的所有面向?qū)ο笳Z言。因為他們可能早已深深地誤導了你。

          JavaScript的"類"和繼承實際上是利用原型鏈來實現(xiàn)的。例如下面的代碼:



          這是js一個最常用的利用構(gòu)造函數(shù)聲明類的形式,里面有我們熟悉的new關(guān)鍵詞,表面上看確實是先有了Foo類然后用new實例化了一個對象。

          但實際上Foo只是一個函數(shù),它和其它函數(shù)沒有什么不同,函數(shù)也是對象,直接像普通函數(shù)一樣直接調(diào)用Foo也不會出錯,加上new之后只是多了幾個操作:

          1. 創(chuàng)建一個新對象;
          2. 執(zhí)行Foo函數(shù),并將Foo的this綁定到新對象;
          3. 把新對象的_proto_指向Foo的prototype;
          4. 如果Foo方法沒有返回其它內(nèi)容的話,返回這個新對象;

          這里我們看到a1并沒有say()方法,但是a1.say()卻正常運行了,這是原型鏈的作用,a1沒有say屬性,就去原型上查找,最終在Foo.prototype里找到。

          關(guān)于什么是原型鏈這里就不細說了,這屬于js基礎(chǔ),不在高級討論范圍內(nèi)。

          上面代碼本質(zhì)上我們是利用一個函數(shù)對象(Foo)又創(chuàng)建了另一個對象(a1),根本沒有傳統(tǒng)意義上的類!

          嗯?等一下!利用對象生成對象?這不應該是Object.create()該干的事兒嗎?沒錯,上面的代碼完全可以利用Object.create()重構(gòu)!

          這種寫法更符合JavaScript一切皆對象的說法!而且更加清楚易懂,原型鏈從上到下清晰可見。

          JavaScript的new真是個千古大忽悠!還有更忽悠的,ES6里的class,讓js的本質(zhì)更加撲朔迷離:



          多么美麗的代碼,多么讓人沉浸無法自拔,當當當!給我清醒點!千萬別讓它美麗的外表迷惑!照妖鏡拿來!給我看清楚了,它的本質(zhì)跟第一段代碼完全一樣!語法糖而已,實際上這里并沒有真正的類,class 仍然是通過 [[Prototype]]機制實現(xiàn)的。

          我們再來看看繼承。

          因為JavaScript沒有真正的類,所以所謂的繼承也都是一些掩人耳目的做法,通過各種惡心的手段達到復用和重寫的目的,來看看有多惡心:



          代碼里SubFoo繼承了Foo,并且SubFoo重寫了Foo的say方法,里面充滿了大量的xxx.prototype,為了讓SubFoo和Foo扯上關(guān)系,必須讓它們的原型鏈接起來:SubFoo.prototype=Object.create(Foo.prototype)。還有許多難以理解的借調(diào)(xxx.call()),特別是為了達到繼承Foo的say方法而寫的這一句:Foo.prototype.say.call(this),多么的丑陋。對于當初涉世未深的你能理解這幾句代碼里面的含義嗎?為了理解這些你花了多久?

          為了我腦袋上所剩無幾的頭發(fā),呸!

          當然有了ES6后情況有所好轉(zhuǎn):

          還是那句話,語法糖而已,本質(zhì)上還是要讓Foo和SubFoo兩個小東西互相扯來扯去,如果再深入一點——加上二級、三級繼承——情況會無法想象地復雜。

          說到底這些其實都是強行使用類的思想來理解JavaScript的一切皆對象而出現(xiàn)的"變態(tài)"代碼。如果你放下屠刀,換一個思路,使用JavaScript語言最初的設(shè)計思路就會發(fā)現(xiàn),一切其實非常簡單,我們用一切皆對象的思路再來實現(xiàn)一遍上面的邏輯:


          怎么樣?沒有了亂七八糟的prototype和構(gòu)造函數(shù),不用擔心原型鏈的走向,一切清新自然,而且最重要的,一切都是對象。

          這種實現(xiàn)方式的官方叫法(非人話叫法)就是"行為委托"。在行為委托模式中,F(xiàn)oo和 SubFoo只是對象,它們之間是兄弟關(guān)系,并不是父類和子類的關(guān)系。代碼中 Foo委托了 SubFoo,反向委托也完全沒問題,我們也不需要實例化類,因為它們根本就不是類,它們只是對象。此外,我們擺脫了一大堆的prototype和借調(diào),我們使用了一種極其簡單的方式完成了封裝。

          當然往深處里講,上述幾種方式每個方式都有自己的優(yōu)缺點。不能很武斷地說這個好那個不好,在不同場景里選擇最合適的實現(xiàn)方式是作為一名高級技術(shù)人員時刻該考慮的事情。


          主站蜘蛛池模板: 亚洲AV成人精品日韩一区| 国产福利一区二区三区| 国产成人精品一区二区三在线观看 | 精品无码成人片一区二区98| 色窝窝无码一区二区三区色欲| 久久99精品国产一区二区三区 | 中文字幕亚洲综合精品一区| 亚洲国产精品一区二区三区在线观看| 亚洲午夜一区二区三区| 国产一区二区精品久久岳√| 黄桃AV无码免费一区二区三区| 亚洲乱码国产一区三区| 一区二区三区无码被窝影院| 波多野结衣一区二区三区高清在线| 黑人大战亚洲人精品一区| 91香蕉福利一区二区三区| 日韩伦理一区二区| 亚洲AV综合色区无码一区 | 国产在线精品一区二区| 中文字幕日本一区| 亚洲熟妇无码一区二区三区导航| 精品无码成人片一区二区| 另类一区二区三区| 国产精品第一区揄拍无码| 亚洲AV综合色一区二区三区| 精品免费国产一区二区| 果冻传媒董小宛一区二区| 国产乱人伦精品一区二区在线观看 | 久久成人国产精品一区二区 | 精品女同一区二区三区在线| 国产日韩精品一区二区三区在线| 中文字幕无码不卡一区二区三区 | 99精品国产高清一区二区麻豆 | 国产高清一区二区三区四区| 精品一区二区三区免费毛片爱 | 精品视频无码一区二区三区| 国产一区中文字幕在线观看| 色噜噜狠狠一区二区三区果冻| 日韩电影在线观看第一区| 亚洲一区电影在线观看| 丰满爆乳一区二区三区|