原型與原型鏈

1.實例對象的原型_proto_與原型對象prototype 通過_proto_聯繫起來。構造函數裏面的_proto_ 指向Object 的原型對象,Object 的原型對象的_proto_指向null. 原型對象prototype 存在於構造函數中。對象中的_proto_總是指向該對象所在(指向)的構造函數中的prototype原型對象。

2.根據實例對象找到其屬性。

若實例對象無該屬性,順應繼承鏈,往下找。

3.函數的聲明與表達式。

在函數的聲明中,有的瀏覽器會在預編譯的時候將函數聲明內容提前,在if-else 語句中,IE8瀏覽器會得到不同的結果,因此最好是採用函數的表達式。

var ff=function(){

};

4.函數都可看成是Function的構造函數實例化的 結果。var f1=new Function("num1","num2","return num1+num2");

f1(10,20);======>30;    f1._proto_==Function.prototype;  =====>true;

5.函數也是一種數據類型

6.正則表達式

.  表達除 \n 以外的任何字符;{a,b} 表達字符出現 a 到 b 次。{a,} a 到無窮次。

[ ] 表示範圍   字符組,任意的單個字符。[4]  表示4   [1-7] 表示數字1到7;

[a-zA-Z] 字符爲大小寫字母。 * 表示出現0~多次。 + 表示出現1~多次。?表示出現 0~1 次。

^表示以後面字符開頭  或取反  ^[0-9] 表示以數字開頭。

$ 表示以前面的字符結尾           [a-z][0-9]$      表示以數字結尾        324a9 

[0-9a-z] 字符爲0-9 的數字或小寫字母。 \d 也表示數字。\D 表示非數字===》等價於[^0-9]。

鍵盤上按鍵:數字、字母、特殊符號(_ 不算特殊符號)

特殊符號[^0-9a-zA-Z_]

限定符:

{5-10} 字符出現次數5到10次;

\s 空白符 。 \S 非空白符。

\w 表示 非特殊符號。f 等。[A-Za-z0-9_]

\W 表示特殊符號。%~等    [^A-Za-z0-9_]

郵箱正則:

eg: [email protected]

[a-zA-Z0-9_.-]+[@][0-9a-zA-Z_.-]+  ([.][a-zA-Z]+){1,2}

 

構造函數的方法創建正則表達式對象。

js 中 中間內容用// 分隔開。或者將匹配的內容放在“ ”中(在java 中或其他語言中常用),但注意的是 轉義字符 \d 

var r=new RegExp(/\d{5}/);

 var str="要我幫幫你12580";

 

var rr=new RegExp("\\d{5}");
 console.log(rr.test(str));            ==========>true;

  console.log(r.test(str));            ===========>true;

字面量方式創建:

var q=/\d+/;
 var re=q.test("kjini0");
console.log(re);                       ======>true;

\1   \2   \3 表示引用第一個、第二個或第三個分組,分組即是用() 括起來的字符位。

正則表達式中 
‘\1’ 匹配的是 字符 ‘\1’ 。 (因爲 ‘\’ 匹配字符 ‘\’ ) 
‘\2’ 匹配的是 字符 ‘\2’

單獨斜槓的 \1 , \2 就是反向引用了。 
‘\1’ 匹配的是 所獲取的第1個()匹配的引用。例如,’(\d)\1’ 匹配兩個連續數字字符。如33aa 中的33 
‘\2’ 匹配的是 所獲取的第2個()匹配的引用。 
例如,’(\d)(a)\1’ 匹配第一是數字第二是字符a,第三\1必須匹配第一個一樣的數字重複一次,也就是被引用一次。如9a9 被匹配,但9a8不會被匹配,因爲第三位的\1必須是9纔可以,

‘(\d)(a)\2’ 匹配第一個是一個數字,第二個是a,第三個\2必須是第二組()中匹配一樣的,如,8aa被匹配,但8ab,7a7不會被匹配,第三位必須是第二組字符的複製版,也是就引用第二組正則的匹配內容。

正則i  不區分大小寫:

給定字符串 str,檢查其是否以元音字母結尾
1、元音字母包括 a,e,i,o,u,以及對應的大寫
2、包含返回 true,否則返回 false

function endsWithVowel(str) {
  var reg=/[a,e,i,o,u]$/i;
    return reg.test(str);
}

var result=str.match(reg);  match 函數可返回匹配上的字符串。

var str="The rain in SPAIN stays mainly in the plain"; 
var n=str.match(/ain/gi);  匹配全局的所有項

ain,AIN,ain,ain

表示一段字符重複出現,可以用分組將這段字符括起來,加以次數限制。

給定字符串 str,檢查其是否符合美元書寫格式
1、以 $ 開始
2、整數部分,從個位起,滿 3 個數字用 , 分隔
3、如果爲小數,則小數部分長度爲 2
4、正確的格式如:$1,023,032.03 或者 $2.03,錯誤的格式如:$3,432,12.12 或者 $34,344.3

function isUSD(str) {
    var reg=/^\$(\d{1,3})(,\d{3})*(\.\d{2})?$/;
    return reg.test(str);
}

 

 

7.apply ,call,bind函數

eg: 在子構造函數中調用父構造函數 。

function Student(name,age){

  Person.call(this,name,age);

}

apply ,call函數的作用是爲了 將函數或方法 賦給當前某一對象使用,改變this 的指向。

APPLY: 函數或方法.apply(對象,[參數1,參數2]);

CALL:  函數或方法.call(對象,參數1,參數2);

bind 函數    複製函數或方法給對象  可有返回值。爲複製後的函數或方法

BIND: 函數或方法.bind(對象,參數); 

eg: per.sayHi.apply(stu,[10,20]);

<script>
            function Random(){
                this.num=parseInt(Math.random()*10+1);
            }
            Random.prototype.printNum=function(){
                console.log(this.num);
            };
            
            Random.prototype.ontime=function(){
                //將this 即Random 對象傳入bind ,若爲null,則表示對應函數內爲window 對象
//                window.setInterval(this.printNum.bind(this),1000);

            };
            var r=new Random();
//            r.ontime();
        </script>

result: 2  2   2  2  。。。(每隔一秒輸出)

window.setInterval(function(){
                    console.log(this.num);
                }.bind(this),1000);       

result: 2  2   2  2  。。。(每隔一秒輸出)

Random.prototype.ontime=function(){
                //將this 即Random 對象傳入bind ,若爲null,則表示對應函數內爲window 對象
//                window.setInterval(this.printNum.bind(this),1000);
                window.setInterval(function(){
                    console.log(parseInt(Math.random()*10+1));
                }.bind(this),1000);
            };

result: 10 2 4 6   7 。。。(隨機產生數字)

注意: this.printNum() 表示調用函數之後的返回值。此函數無返回值。函數是命名函數作爲參數時,只需傳入命名函數的名字即可,無括號。

函數作爲參數,定時完成部分功能。

<script>
            function f1(fn){
                window.setInterval(function(){
                    console.log("定時開始");
                    fn();
                    console.log("定時結束");
                },1000);
            }
            function fn(){
                console.log("活到老,學到老");
            }
            f1(fn);
        </script>

[Web瀏覽器] "定時開始"    /frontEnd/bind/setInterval.html (11)

[Web瀏覽器] "活到老,學到老"    /frontEnd/bind/setInterval.html (17)
[Web瀏覽器] "定時結束"    /frontEnd/bind/setInterval.html (13)
[Web瀏覽器] "定時開始"    /frontEnd/bind/setInterval.html (11)
[Web瀏覽器] "活到老,學到老"    /frontEnd/bind/setInterval.html (17)
[Web瀏覽器] "定時結束"    /frontEnd/bind/setInterval.html (13)

 

8.函數的組成。

f1.caller();   表示調用f1 的對象。

f1.arguments.length 表示實參的個數。

f1.length:表示形參的個數。

f1.name: 表示函數名

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章