bind的原理深度剖析

2021-09-29 07:43:42 字數 2821 閱讀 9368

var value = 2;

var foo = ;

function bound (name: string, age: number)

};bound.call(foo, "jack", 20); // 直接執行了函式,並修改了this指向

// var bindfoo1 = bound.bind(foo, "jack", 20); // 返回乙個函式

bindfoo1();

// var bindfoo2 = bound.bind(foo, "jack"); // 返回乙個函式

bindfoo2(20);

// `在這裡插入**片`

bind特性:

1.返回乙個新函式

2.可以指定this

3.可以傳入引數

4.柯禮化

使用場景

**

var nickname =

"kitty"

;function

person

(name)

.bind

(this),

500);}

}var person =

newperson

('jawil');

person.

distractedgreeting()

;// hello, my name is jawil**

柯里化(curry)

只傳遞給函式一部分引數來呼叫它,讓它返回乙個函式去處理剩下的引數。

可以一次性地呼叫柯里化函式,也可以每次只傳乙個引數分多次呼叫。

var

add=

function

(x);};

varadd

=function

(x)}

var increment =

add(1)

;var addten =

add(10)

var increment =

add(1)

;var addten =

add(10)

;increment(2

);// 3

addten(2

);// 12

add(1)

(2);

// 3`

模擬實現

bind() 函式在 es5 才被加入,所以並不是所有瀏覽器都支援,ie8及以下的版本中不被支援,如果需要相容可以使用 polyfill 來實現。

你好! 這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器, 可以仔細閱讀這篇文章,了解一下markdown的基本語法知識。

// 第一版

function.prototype.

bind2

=function

(context)

}

funciton.prototype.

bind2

=function

(context)

}

乙個繫結函式也能使用new操作符建立物件:

這種行為就像把原函式當成構造器,提供的 this 值被忽略,

同時呼叫時的引數被提供給模擬函式。

var value =2;

var foo =

function

bar(name, age)

bar.prototype.friend =

'kevin'

;var bindfoo = bar.

bind

(foo,

'jack');

var obj =

newbindfoo(20

);//undefine jack 20

function.prototype.

bind2

=function

(context)

; fbound.prototype =

this

.prototype;

return fbound;

}

function.prototype.

bind2

=function

(context)

fbound.prototype =

this

.protoyep;

return fbound;

}

function.prototype.

bind2

=function

(context)

var self =

this

;var args = array.prototype.slice.

call

(arguments,1)

varfnop

=function()

;var

fbound

=function()

fnop.prototype =

this

.prototype;

fbound.prototype =

newfnop()

;(fbound.prototype = object.

create

(this

.prototype)

)return fbound;

}

深度剖析Spring Cloud底層原理

毫無疑問,spring cloud 是目前微服務架構領域的翹楚,無數的書籍部落格都在講解這個技術。不過大多數講解還停留在對 spring cloud 功能使用的層面,其底層的很多原理,很多人可能並不知曉。實際上,spring cloud 是乙個全家桶式的技術棧,它包含了很多元件。本文先從最核心的幾個...

hadoop 一 深度剖析hdfs原理

在配置hbase集群將 hdfs 掛接到其它映象盤時,有不少困惑的地方,結合以前的資料再次學習 大資料底層技術的三大基石起源於google在2006年之前的三篇 gfs map reduce bigtable,其中gfs map reduce技術直接支援了apache hadoop專案的誕生,big...

第5講 zend原理深度剖析

1.檔案.htaccess的重寫機制 如果 apache 開啟了重寫機制,則在 apache 啟動時,會去找 的根目錄有沒有 htaccess 檔案,如果有則按 htaccess 檔案中的規則,沒有則預設。在 apache 的底層 中有如下方法 所以讀取的是 根目錄,命名為 htaccess 的檔案...