前端基礎 call,apply,bind的的理解

2022-08-22 16:27:09 字數 2009 閱讀 7817

背景

前兩天在做小程式的需求的時候用到bind的時候才想起自己對這三的東西的了解比較淺薄,這個時候用的時候就有點怕。時候還是要好好學習下,理解下怎麼玩。

let obj1 = 

}let obj2 =

console.log(obj1.getname()); // "copyes"

console.log(obj1.getname.call(obj2)); // "fanchao"

function showargs(a, b, c)

showargs.call(this, 3,4,5);

let arr1 = [12, 'foo', , -1024];

let arr2 = ['copyes', '22', 1024];

console.log(arr1);

// [ 12, 'foo', , -1024, 'copyes', '22', 1024 ]

let numbers = [5,665,32,773,77,3,996];

let maxnum2 = math.min.call(math, 5,665,32,773,77,3,996);

console.log(maxnum);

console.log(maxnum2);

function isarray(obj)

console.log(isarray(1));

console.log(isarray([1,2]));

var domnodes = array.prototype.slice.call(document.getelementsbytagname("*"));

定義乙個 log 方法,讓它可以** console.log 方法:

// 常規做法

function log(msg)

log(12);

log(1,2)

上面能夠基本解決列印輸出問題,但是下面多引數的時候就gg了。換個更好的方式吧。

function log()

log(12);

log(1,2)

接下來是要在每一條列印資訊前面都要加上乙個特定字串'fanchao`s'又怎麼說呢?

function log()

log(12);

log(1,2)

var func = function()

func(); // undefined, {}

var obj =

var bar = func.bind(obj,1);

bar(); // 2 ,

乙個有意思的事:

var bar = function() 

var foo =

var sed =

var func = bar.bind(foo).bind(sed);

func(); //3

var fiv =

var func = bar.bind(foo).bind(sed).bind(fiv);

func(); //3

5、這三個方法的異同點是什麼呢?

還是先看個栗子:

var obj = ;

var foo =

}console.log(foo.getx.bind(obj)()); //81

console.log(foo.getx.call(obj)); //81

前端PS基礎

1.ps 技能需求 工具需求 ps技能的需求 切圖 修圖 測量 ps工具 移動工具 移 層 矩形選框工具 切圖 選定圖層後,利用矩形選框選取所需區域,複製貼上即可 矩形選框是對單一圖層的操作 裁切工具 切圖 選取所需區域後,回車確認 裁切工具是對工作區域的操作 吸管工具 識色 橫排文字工具 手抓 移...

前端開發基礎

前端開發基礎 1.輸入兩個數字,分別在螢幕上輸出兩數之和 之差 之積 求商 取餘,如 兩數之和為 xx 並且換行。prompt接收到的值是乙個字串型別 var x prompt 請輸入 10 var y prompt 請輸入 20 需要將x和y轉化成數字型 parseint 將括號內的值轉換為整數型...

前端最基礎

盒子模型 例如div元素,可以把它看作是乙個盒子,它有自己的寬和高。而盒子模型是說每個盒子有自己的 width height padding margin border width 就相當於盒子裡面所裝東西的寬度,height 就相當於盒子裡面所裝東西的高度,padding 就是盒子裡所裝的東西和盒...