//ECMAScript 5 Function.prototype.bind 関数互換処理
(function(){
if ( !Function.prototype.bind ) { //function(){}.bind
Function.prototype.bind = function ( o, /*パラメータリスト*/ ) {
var self = this,boundArgs = Array.prototype.slice.call(arguments, 0);
return function(){
var args = [],
for ( i = 1; i for ( i = 0; i return this.apply(o, args);
}
}
})();
使用例:
1.呼び出し例
/*example 1*/
function f1(y , z){ return this.x y z;}
//Call 1
var g1 = f1.bind({x:1}, 2); //this.x = 1; y = 2;
console.loog( g1(3) ); //this.x y 3 = 6;
//Call 2
var g2 = f1.bind({x:1}); //this.x = 1;
console.log( g2(2,3) ); //this.x 2 3 = 6
/*例 2*/
var f2( x, y){ return x y; }
//Call
var g3 = f2.bind(null, 1) //x = 1
console.log( g3(2) ); x 2 = 3
2. DOM 呼び出しの例
var eleBtn = document.getElementById("button")
, eleText = document.getElementById("text");
eleBtn.onclick = function(color) {
color = color || " #003399";
this.style.color = color; //この時点では eleText を指します
}.bind(eleText, "#cd0000"); >