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_]
郵箱正則:
[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: 表示函數名