JS學習筆記之call apply的用法

2021-09-11 14:17:01 字數 1721 閱讀 1484

var func = function (a, b, c) ;

複製**

var func = function (a, b, c) 

func.call (null, 1, 2, 3);

複製**

var func = function (a, b, c) ;

複製**

如果是嚴格模式下,函式體內的this還是null

var func = function (a, b, c) ;

複製**

複製**

(1) 可以改變this指向

var obj1 = ;

var obj2 = ;

window.name = 'angelababy';

var getname = function

() ;

getname(); // 輸出:angelababy

getname.call(obj1); // 輸出:lq

getname.call(obj2); // 輸出:xiaoming

複製**

(2) function.prototype.bind

幾乎所有的高階瀏覽器都內建了function.prototype.bind方法用來指定函式內部this指向問題。如果不支援原生的function.prototype.bind,我們可以自己實現乙個:

function.prototype.diybind = function (context) 

};var obj =

var func = function

() .diybind(obj);

func();

複製**

上面是簡化版的,下面是稍微複雜點的版本:

function.prototype.binds = function()}

var obj =

var func = function(a, b, c, d).binds(obj,1, 2);

func(3,4);

複製**

(3)借用其他物件的方法

借用的第一種場景是「借用建構函式」:

var a = function (name) 

var b = function

() b.prototype.getname = function

() var b = new b('xiaoming');

console.log (b.getname()); //輸出:xiaoming

複製**

借用的第二種場景是「借用array.prototype物件上的方法」,比如:

(function

())(1, 2)

複製**

在操作arguments時我們經常會借用array.prototype物件上的各種方法。比如想把arguments轉成真正陣列時,可以借用array.prototype.slice方法。想截去arguments列表中的第乙個元素,可以借用array.prototype.shift方法。

JS學習筆記 之 try catch

try catch e finally 處理流程 a.正常執行try內的 b.遇到錯誤,停止執行後續try內的 並跳轉到catch部分,同時將錯誤資訊封裝到error物件中傳入catch i.執行catch部分 可利用傳入的error物件,列印錯誤資訊 通過try catch 捕捉到的錯誤資訊不會丟...

js學習筆記之正則

是為了提取匹配的字串。表示式中有幾個 就有幾個相應的匹配字串。s 表示連續空格的字串。是定義匹配的字元範圍。比如 a za z0 9 表示相應位置的字元要匹配英文本元和數字。s 表示空格或者 號。一般用來表示匹配的長度,比如 s 表示匹配三個空格,s表示匹配一到三個空格。0 9 a z a z 包含...

JS學習筆記(四)之除錯

使用控制台檢查變數值 console.log 使用 type of 檢查變數的型別 console.log typeof 輸出 string console.log typeof0 輸出 number console.log typeof 輸出 object console.log typeof 輸...