引數1,引數2...]);
call使用語法:
函式名/方法名.call(物件,屬性1,屬性2...)
作用:可以改變this的指向
不同點:
引數傳遞方式不同
bind是複製乙個方法或者函式
xw.say.call(xh);
注:math.random( ) 返回介於 0(包含) ~ 1(不包含) 之間的乙個隨機數
函式中幾個屬性(了解):
name:函式名,唯讀(不可修改)
arguments:實參(呼叫該函式時傳入的具體引數)個數
length:形參(函式宣告時的變數)個數
caller:函式的呼叫者(f1函式在f2中呼叫,則f2為呼叫者)
備註:例:
function add(a,b) ;
add(1,2); //宣告函式add時,a,b就是形參。呼叫函式add(1,2) 1,2就是實參
1.函式可作為引數使用
function f1(fn)
fn是引數,最後作為函式使用了,函式是可以作為引數使用的
例:陣列排序
var arr = [40,100,1,5,25,10];
方法一:
arr.sort(function(a,b));//輸出結果:1,5,10,25,40,100
方法二:
arr.sort(function(a,b)else if(a==b)else
});console.log(arr);
2.函式可作為返回值
function f1()
}var ff=f1();
ff();
3.匿名函式
f1(function () );
4.命名函式
function f2()
f1(f2);
注意:函式作為引數的時候,如果是命名函式,那麼只傳入命名函式的名字,沒有括號
typeof:獲取變數的資料型別
instenceof:判斷這個物件是不是某個資料型別
獲取某個物件的資料型別:[object object/array/date...]
object.prototype.tostring.call(物件);
函式的作用域:
函式的變數分為區域性變數和全域性變數
注:函式中定義的是區域性變數
函式的作用域就是變數的使用範圍
注:js中沒有塊級作用域(一對括號中定義的變數,這個變數可以在大括號外面使用)
作用域鏈:
變數的使用,從裡向外,層層的搜尋,搜尋到了就可以直接使用了;
若層層搜尋,搜尋到0級作用域的時候,如果還是沒有找到這個變數,結果就是報錯
var num=10; //作用域鏈 級別:0
function f1()
f2();
}f1();
預解析:
就是在瀏覽器解析**之前,把變數的宣告和函式的宣告提前(提公升)到該作用域的最上面
閉包:
概念:函式a中有乙個函式b,函式b中可以訪問函式a中定義的變數或者是資料,此時形成了閉包(不嚴謹)
模式:1.函式模式的閉包(函式中有乙個函式);
2.物件模式的閉包(函式中有乙個物件)。
作用:快取資料,延長作用域鏈
優缺點:
快取資料,是優點也是缺點,因為資料沒有及時釋放
注意:區域性變數是在函式中,函式使用結束後,區域性變數就會被自動的釋放
閉包後,裡面的區域性變數的使用作用域鏈就會被延長
沙箱:
就是乙個環境,也可以叫黑盒,在這個環境中模擬外面真實的開發環境,完成需求,效果和外面的真實的開發環境是一樣的;
沙箱可以避免命名衝突
遞迴:
在函式中呼叫自己,但一定要有結束的條件,否則就是死迴圈。
應用: 遍歷;遞迴不輕易使用,效率很低
深拷貝:
獲取鍵值對:
for(var key in obj1)
正規表示式:
作用:匹配字串
建立正規表示式物件:
1.通過建構函式建立物件
2.字面量方式建立物件
1.正規表示式建立物件
var reg=new regexp(/\d+/);
var str="我的**號碼是100649";
var flag=reg.test(str);//呼叫字串驗證是否匹配
console.log(flag);
2.字面量方式建立物件
var reg1=/\d/;
var flag1=reg.test("小涵的幸運數字是369");
console.log(flag1);
簡寫:console.log(/\d/.test("小涵的幸運數字是9"));
偽陣列:(類陣列)
無法直接呼叫陣列方法或期望length屬性有什麼特殊的行為,不具有陣列的push,pop等方法,但仍可以對真正陣列遍歷方法
來遍歷它們。
典型的是函式的argument引數,還有像呼叫getelementsbytagname,document.childnodes之類的,它們都返回nodelist
物件都屬於偽陣列。
可以使用array.prototype.slice.call(fakearray)將陣列轉化為真正的array物件。
這裡把符合以下條件的物件稱為偽陣列:
1.具有length屬性
2.按索引方式儲存資料
3.不具有陣列的push,pop等方法
JS函式表示式
1.遞迴 function digui num else var d digui digui null d 3 改進 用arguments.callee num 1 代替 digui num 1 arguments.callee 是指向引數所在的函式的指標,code如下 function digui...
函式表示式
函式定義有以下兩種方式 一種是函式宣告,一種是函式表示式。函式宣告 在執行 之前會先讀取函式宣告,即函式宣告提公升。函式表示式 常用語法形式是常規的變數賦值語句,即建立乙個匿名函式並賦值給乙個變數。函式表示式在使用之前必須賦值,否則會出錯,這點與函式宣告提公升不同。能夠將匿名函式作為其他函式的值進行...
函式表示式
定義函式的方式有兩種 一種是函式宣告,另一種是函式表示式 函式宣告語法格式如下 function functionname arg0,arg1,arg2 關於函式宣告,有乙個重要的特徵就是函式宣告提公升,意思是在執行 之前會先讀取函式宣告 函式表示式語法格式如下 var functionname f...