Days06 繼承,正則表達式

1.原型補充


構(gòu)造函數(shù),實例對象和原型的關(guān)系

原型鏈:是一種關(guān)系,實例對象var p1=new Person();和原型對象person.prototype之間的關(guān)系,關(guān)系是通過原型(proto)來聯(lián)系的

實例對象的原型proto和構(gòu)造函數(shù)的原型prototype指向是相同的

實例對象中的proto原型指向的是構(gòu)造函數(shù)中的原型prototype

實例對象中proto是原型,瀏覽器使用的

構(gòu)造函數(shù)中的prototype是原型,程序員使用的

原型指向可以改變

? ?實例對象的原型proto指向的是該對象所在的構(gòu)造函數(shù)的原型對象? 構(gòu)造函數(shù)的原型對象(prototype)指向如果改? ? ? 變了,實例對象的原型(proto)指向也會發(fā)生改變

? 實例對象和原型對象之間的關(guān)系是通過proto原型來聯(lián)系起來的,這個關(guān)系就是原型鏈

? 如果原型指向改變了,那么就應(yīng)該在原型改變指向之后添加原型方法

原型指向Object.prototype

? ? //實例對象中有proto原型? ? //構(gòu)造函數(shù)中有prototype原型? ? //prototype是對象

? ? //實例對象中的proto指向的是構(gòu)造函數(shù)的prototype

? ? //所以,prototype這個對象中也有proto,指向了Object.prototype

2.繼承

概念:首先繼承是一種關(guān)系,類(class)與類之間的關(guān)系,JS中沒有類,但是可以通過構(gòu)造函數(shù)模擬類,然后通過原型來實現(xiàn)繼承 繼承也是為了數(shù)據(jù)共享,js中的繼承也是為了實現(xiàn)數(shù)據(jù)共享

原型繼承

通過Student.prototype=new Person()改變學(xué)生得原型指向來實現(xiàn)繼承Person的屬性和方法

缺點:屬性值都一樣,代碼重復(fù)

原型繼承

借用構(gòu)造函數(shù)繼承

借用構(gòu)造函數(shù):構(gòu)造函數(shù)名字.call(當前對象,屬性,屬性,屬性....);解決了屬性繼承,并且值不重復(fù)的問題

缺陷:父級類別中的方法不能繼承

借用構(gòu)造函數(shù)繼承

組合繼承

原型+借用構(gòu)造函數(shù)繼承。解決了兩種模式的缺點

組合繼承

拷貝繼承

?拷貝繼承:就是把對象中需要共享的屬性或者犯法,直接遍歷的方式復(fù)制到另一個對象中

拷貝繼承

3.高級函數(shù)

函數(shù)聲明與函數(shù)表達式的區(qū)別:

函數(shù)聲明必須有名字

函數(shù)聲明會函數(shù)提升,在預(yù)解析階段就已創(chuàng)建,聲明前后都可以調(diào)用

函數(shù)表達式類似于變量賦值

函數(shù)表達式可以沒有名字,例如匿名函數(shù)

函數(shù)表達式?jīng)]有變量提升,在執(zhí)行階段創(chuàng)建,必須在表達式執(zhí)行之后才可以調(diào)用

函數(shù)的調(diào)用方式:

函數(shù)調(diào)用的方式

this的指向問題

this的指向問題

apply &? call

apply &? call
apply &? call

bind

//bind方法是復(fù)制的意思,參數(shù)可以在復(fù)制的時候傳進去,也可以在復(fù)制之后調(diào)用的時候傳入進去 //apply和call是調(diào)用的時候改變this指向? ? ? ? //bind方法,是賦值一份的時候,改變了this的指向

? ? * 函數(shù)名字.bind(對象,參數(shù)1,參數(shù)2,...);---->返回值是復(fù)制之后的這個函數(shù)

? ? * 方法名字.bind(對象,參數(shù)1,參數(shù)2,...);---->返回值是復(fù)制之后的這個方法

函數(shù)閉包

閉包的概念:函數(shù)A中,有一個函數(shù)B,函數(shù)B中可以訪問函數(shù)A中定義的變量或者是數(shù)據(jù),此時形成了閉包

? ? * 閉包的模式:函數(shù)模式的閉包,對象模式的閉包

? ? * 閉包的作用:緩存數(shù)據(jù),延長作用域鏈

? ? * 閉包的優(yōu)點和缺點:緩存數(shù)據(jù)

閉包

4.正則表達式

菜鳥教程在線正則表達測試:https://c.runoob.com/front-end/854

元字符串

? ? ?* . 表示的是:除了\n以外的任意的一個字符 "fdsfs238"

? ? * [] 表示的是:范圍,? [0-9] 表示的是0到9之間的任意的一個數(shù)字,? "789" [0-9]

? ? * [1-7] 表示的是1到7之間的任意的一個數(shù)字

? ? * [a-z] 表示的是:所有的小寫的字母中的任意的一個

? ? * [A-Z] 表示的是:所有的大寫的字母中的任意的一個

? ? * [a-zA-Z] 表示的是:所有的字母的任意的一個

? ? * [0-9a-zA-Z] 表示的是: 所有的數(shù)字或者是字母中的一個(非特殊符號)

? ? * [] 另一個函數(shù): 把正則表達式中元字符的意義干掉? ? [.] 就是一個.

? ? * | 或? [0-9]|[a-z] 表示的是要么是一個數(shù)字,要么是一個小寫的字母

? ? * () 分組 提升優(yōu)先級? [0-9]|([a-z])|[A-Z]

? ? * ([0-9])([1-5])([a-z]) 三組, 從最左邊開始計算

? ? * (()(()))從最左邊開始計算

? ? * 都是元字符,但是也可以叫限定符,下面的這些

? ? *? ? *? 表示的是:前面的表達式出現(xiàn)了0次到多次

? ? *? ? [a-z][0-9]* 小寫字母中的任意一個 后面是要么是沒有數(shù)字的,要么是多個數(shù)字的

? ? *? ? "fdsfs3223323"? [a-z][0-9]*

? ? *

? ? *? ? +? 表示的是:前面的表達式出現(xiàn)了1次到多次

? ? *? ? [a-z][9]+? 小寫字母一個后面最少一個9,或者多個9

? ? *? ? "fesfewww9fefds"

? ? *

? ? *? ? ?? 表示的是:前面的表達式出現(xiàn)了0次到1次,最少是0次,最多1次 ,另一個含義:阻止貪婪模式

? ? *? ? [4][a-z]? "1231234ij"

? ? *? 限定符:限定前面的表達式出現(xiàn)的次數(shù)

? ? *? {} 更加的明確前面的表達式出現(xiàn)的次數(shù)

? ? *? {0,} 表示的是前面的表達式出現(xiàn)了0次到多次,和 *一樣的

? ? *? {1,} 表示的是前面的表達式出現(xiàn)了1次到多次,和 +一樣的

? ? *? {0,1} 表示的是前面的表達式出現(xiàn)了0次到1次,和 ?一樣的

? ? *? {5,10} 表示的是前面的表達式出現(xiàn)了5次到10次

? ? *? {4} 前面的表達式出現(xiàn)了4次

? ? *? ^ 表示的是以什么開始,或者是取非(取反) ^[0-9] 以數(shù)字開頭

? ? *? ^[a-z] 以小寫字母開始

? ? *? [^0-9] 取反,非數(shù)字

? ? *? [^a-z] 非小寫字母

? ? *? [^0-9a-zA-Z_]

? ? *? $ 表示的是以什么結(jié)束? [0-9][a-z]$? 必須以小寫字母結(jié)束

? ? *? ^[0-9][a-z] 相當于是嚴格模式? "3f2432e"? "4f"

? ? *? \d 數(shù)字中的任意一個,

? ? *? \D 非數(shù)字中的一個

? ? *? \s 空白符中的一個

? ? *? \S 非空白符

? ? *? \w 非特殊符號[^a-z0-9A-Z]

? ? *? \W 特殊符號


? ? *? ? . 除了\n以外的任意一個單個字符

? ? *? ? []? 范圍

? ? *? ? () 分組,提升優(yōu)先級

? ? *? ? | 或者

? ? *? ? * 0-多次

? ? *? ? + 1-多次

? ? *? ? ? 0-1次

? ? *? ? {0,} 和*一樣

? ? *? ? {1,} 和+

? ? *? ? {0,1} 和?

? ? *

? ? *? ? \d 數(shù)字中的一個

? ? *? ? \D 非數(shù)字

? ? *? ? \s 空白符

? ? *? ? \S 非空白符

? ? *? ? \W? 特殊符號

? ? *? ? \w 非特殊符號 _

? ? *? ? ^ 取反,以什么開始

? ? *? ? $ 以什么結(jié)束

案例

正則表達式案例

參數(shù)


參數(shù)

正則匹配

// 匹配日期

var dateStr = '2015-10-10';

var reg = /^\d{4}-\d{1,2}-\d{1,2}$/

console.log(reg.test(dateStr));

偽數(shù)組

擁有 length 屬性,其它屬性(索引)為非負整數(shù)(對象中的索引會被當做字符串來處理,這里你可以當做是個非負整數(shù)串來理解)

不具有數(shù)組所具有的方法

后記

基礎(chǔ)過完了,寫項目!!!Vue,小程序搞起來

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容