closure類摘要如下:
closure
方法說明:
closure::__construct — 用於禁止例項化的建構函式
closure::bind — 複製乙個閉包,繫結指定的$this物件和類作用域。
closure::bindto — 複製當前閉包物件,繫結指定的$this物件和類作用域。
乙個例項<?php
/**
* 複製乙個閉包,繫結指定的$this物件和類作用域。
* * @author 瘋狂老司機
*/class animal
/* * 獲取animal類靜態私有成員屬性
*/$cat = static function() ;
/* * 獲取animal例項私有成員屬性
*/$dog = function() ;
/* * 獲取animal例項公有成員屬性
*/$pig = function() ;
$bindcat = closure::bind($cat, null, new animal());// 給閉包繫結了animal例項的作用域,但未給閉包繫結$this物件
$binddog = closure::bind($dog, new animal(), 'animal');// 給閉包繫結了animal類的作用域,同時將animal例項物件作為$this物件繫結給閉包
$bindpig = closure::bind($pig, new animal());// 將animal例項物件作為$this物件繫結給閉包,保留閉包原有作用域
echo $bindcat(),'
';// 根據繫結規則,允許閉包通過作用域限定操作符獲取animal類靜態私有成員屬性
echo $binddog(),'
';// 根據繫結規則,允許閉包通過繫結的$this物件(animal例項物件)獲取animal例項私有成員屬性
echo $bindpig(),'
';// 根據繫結規則,允許閉包通過繫結的$this物件獲取animal例項公有成員屬性
總結: underscore的bind和bindAll方法
bind方法和bindall方法都是用來設定函式的this值的,區別是呼叫方式不同。var xiaoming bind var func bind xiaoming,xiaoming.say func i am xiaoming bindall bindall xiaoming,say var fu...
js深入之call apply和bind模擬實現
var foo function fn fn.call foo 1注意 1 call改變了this的指向,指到foo 2 fn函式執行 即可將上面的 改變成下面這種形式 var foo foo.fn 1即將fn作為物件foo的屬性,然後進行呼叫。則可總結出模擬實現的步驟 1 將函式設定為物件的屬性,...
call apply和bind的原理
call 作用 call 方法就是使用乙個指定this值和若干個指定引數值的前提下呼叫摸個函式或方法。var foo function bar 如果不對this進行繫結執行bar 會返回undefined bar.call foo 1也就是說call 改變了this的指向,指向了foo 下面進行一下...