search
尋找貓咪~QQ 地點 桃園市桃園區 Taoyuan , Taoyuan

什麼是偽類?作為JavaScript程序員的你知道嗎?

什麼是偽類?

偽類對元素進行分類是基於特徵(characteristics)而不是它們的名字、屬性或者內容;原則上特徵是不可以從文檔樹上推斷得到的。

偽類有::first-child ,:link:,vistited,:hover:,:active,:focus,:lang,:right,:left,:first何為偽類?就是css內植類css內部本身賦予它一些特性和功能,也就是你不用再class=...或id=...你就可以直接拿來使用,當然你也可以改變它的部分屬性比如:a:link{color:#FF0000;}CSS很多的建議並沒有得到瀏覽器的支持,但有四個可以安全用在超鏈接上的偽類。

偽類有什麼作用?

CSS很多的建議並沒有得到瀏覽器的支持,但有四個可以安全使用的用在連接上的CSS偽類。

◆link用在為訪問的連接上。

◆visited用在已經訪問過的連接上。

◆hover用於滑鼠游標置於其上的連接。

◆active用於獲得焦點(比如,被點擊)的連接上。

例如:

ExampleSourceCode

a:link{color:red}a:visited{color:green}a:hover{color:blue}a:active{color:orange}

更多的理解?

JavaScript的原型中存在諸多矛盾。某些看起來有點像基於類的語言的複雜語法問題遮蔽了它的原型機制。它不讓對象直接從其他對象繼承,反而插入了一個多餘的間接層,從而使構造函數產生對象。

當一個函數對相被創建時,Function構造器產生的函數對象會運行類似遮掩的一些代碼:

this.prototype ={constructor:this};

新函數對象被賦予一個prototype蘇花型,其值是包含 一個constructor屬性且屬性值為新函數對象。該Prototype對象是存放繼承特徵的地方。因為JavaScript語言沒有提供一種方法去確定哪個函數是打算用來作結構的,所以每個函數都會得到一個Prototype對象。

constructor屬性沒什麼用。重要的是Prototype對象。當採用構造器調用模式,即使用new前綴去調用一個函數時,這將修改函數執行的方式。如果new 運算符是一個方法而不是一個運算符,它可能會像這樣執行:

我們也可以定義一個構造器擴充它的原型:

現在我們可以構造一個實例:

我們可以構造另外一個偽類來繼承Mammal,這是通過定義它的constructor函數並替換它的prototype為一個Mammal的實例來實現的:

偽類模式本意是想面向對象靠攏,但它看起來格格不入。我們可以隱藏一些不好的細節,這是通過使用method方法定義一個inherits方法來實現的:

我們的inherits和method方法都返回this,這將允許我們可以以級聯的樣式編程。可以只用一行語句構造我們的Cat:

本人自創的一個小群:621071874,如有交流討論都可以進來暢談JS

本人創建的一個交流學習群:621071874,歡迎大牛,小白進群討論學習。

「偽類」形式可以給不熟悉JavaScript的程序員提供便利,但是也隱藏了該語言的真實本質,借鑒類的表示法可能誤導程序員去編寫國語深入與複雜的層次結構。許多複雜的類層次結構產生的原因就是靜態類型檢查的約束。JavaScript完全拜託了那些約束。在基於類的語言中,類的繼承是代碼重要的唯一方式。JavaScript悠著更多更好的選擇。

最後,不知道各位程序員對偽類有什麼看法,請多多指教。



熱門推薦

本文由 yidianzixun 提供 原文連結

寵物協尋 相信 終究能找到回家的路
寫了7763篇文章,獲得2次喜歡
留言回覆
回覆
精彩推薦