Native: Function

関数のメソッドです。

参考情報:

Functionメソッド: create

他のすべての関数のプロパティで利用される関数クロージャを作るためのベース関数です。

構文:

var createdFunction = myFunction.create([options]);

引数:

  1. [options] - (オブジェクト, オプション) 関数を作成する際に利用するオプション。オプションがなければ、funcionのコピーが作られます。

オプション:

  • bind - (オブジェクト: 初期値=この関数) 関数内の"this"が参照するオブジェクト。
  • event - (いろいろ: 初期値=false) trueがセットされていれば、その関数はイベントリスナーとしてふるまい、第1引数にイベントを受け取ります。クラス名がセットされていれば、関数はそのクラスの新しいインスタンスを第1引数として受け取ります(イベントは引数のコンストラクタとして渡されます)。
  • arguments - (いろいろ: 初期値=標準のarguments) 単一の引数か引数の配列が関数の引数として渡されます。eventとargumentsの両方がオプションに設定されていると、eventが第1引数となり、argumentsがそれに続きます。
  • delay - (: 初期値=delayなし) セットすると、戻り値としての関数は設定した時間(ミリ秒単位)だけ遅れて実行され、呼び出されたときにタイマーハンドルを戻り値として返します。
  • periodical - (: 初期値=定期実行なし) セットすると、戻り値としての関数は設定された間隔(ミリ病単位)で定期的に実行され、呼び出されたときにタイマーハンドルを返します。
  • attempt - (真偽値: 初期値=false) trueがセットされていれば、戻り値としての関数は、実行してエラーが起きた場合にnullを返します。

戻り値:

  • (関数) 渡されたオプションに応じて作成された関数。

例:

var myFunction = function(){
    alert("I'm a function. :D");
};

var mySimpleFunction = myFunction.create(); //単なるコピーです

var myAdvancedFunction = myFunction.create({ //この関数は呼び出されると、attemptの条件にしたがいます
    arguments: [0,1,2,3],
    attempt: true,
    delay: 1000,
    bind: myElement
});

Functionメソッド: pass

引数とバインドを持ったクロージャを返します。

構文:

var newFunction = myFunction.pass([args[, bind]]);

引数:

  1. args - (いろいろ, オプション) 関数に渡される引数(複数の引数を渡したい場合は、配列にすること)
  2. bind - (オブジェクト, オプション) 関数内で'this'として参照したいオブジェクト。

戻り値:

  • (関数) 呼び出された時に引数が渡されている関数。

例:

var myFunction = function(){
    var result = 'Passed: ';
    for (var i = 0, l = arguments.length; i < l; i++){
        result += (arguments[i] + ' ');
    }
    return result;
}
var myHello = myFunction.pass('hello');
var myItems = myFunction.pass(['peach', 'apple', 'orange']);

//これ以降、関数が実行できます:
alert(myHello()); //myFunctionには"heloo"が渡されます
alert(myItems()); //myFunctionに要素の配列が渡されます

Functionメソッド: attempt

関数の実行を試みます。

構文:

var result = myFunction.attempt([args[, bind]]);

引数:

  1. args - (いろいろ, オプション) 関数に渡される引数(複数の引数を渡したい場合は配列にすること)。
  2. bind - (オブジェクト, オプション) 関数内で'this'として参照したいオブジェクト。

戻り値:

  • (いろいろ) 成功時は関数の戻り値、例外が発生すればnull。

例:

var myObject = {
    'cow': 'moo!'
};

var myFunction = function(){
    for (var i = 0; i < arguments.length; i++){
        if(!this[arguments[i]]) throw('doh!');
    }
};
var result = myFunction.attempt(['pig', 'cow'], myObject); //戻り値: null

Functionメソッド: bind

ターゲットとなる関数内でのthisのスコープを変更して、任意のパラメータにバインドします。

構文:

myFunction.bind([bind[, args[, evt]]]);

引数:

  1. bind - (オブジェクト, オプション) 関数内で'this'として参照したいオブジェクト。
  2. args - (いろいろ, オプション) 関数に渡される引数(複数の引数を渡したい場合は配列にすること)

戻り値:

  • (関数) バインドされた関数。

例:

function myFunction(){
    //ここでの'this'はwindowを参照していて、要素ではありません。
    //操作したい要素に対してこの関数をバインドしなくてはなりません。
    this.setStyle('color', 'red');
};
var myBoundFunction = myFunction.bind(myElement);
myBoundFunction(); //これでmyElementのテキストを赤くできます。

Functionメソッド: bindWithEvent

ターゲットとなる関数内の'this'のスコープを変更し、任意のパラメータにバインドします。これはまた、イベントに「空間」を作ります。これにより、Element:addEventとあわせて関数と引数を使うことができるようになります。

構文:

myFunction.bindWithEvent([bind[, args[, evt]]]);

引数:

  1. bind - (オブジェクト, オプション) 関数内で'this'として参照したいオブジェクト。
  2. args - (いろいろ, オプション) 関数に渡したい引数(複数の引数を渡すときは配列にすること)

戻り値:

  • (関数) バインドされた関数。

例:

function myFunction(e, add){
    //ここでは'this'が要素ではなく、windowを参照していることに注意してください。
    //変更したい要素をこの関数にバインドする必要があります。
    this.setStyle('top', e.client.x + add);
};
$(myElement).addEvent('click', myFunction.bindWithEvent(myElement, 100));
//myElementをクリックすると、マウスカーソルの位置から100ピクセル横に移動します。

Functionメソッド: delay

指定した時間だけ関数の実行を送らせます。

構文:

var timeoutID = myFunction.delay([delay[, bind[, args]]]);

引数:

  1. delay - (, オプション) 遅らせる時間(ミリ秒単位)。
  2. bind - (オブジェクト, オプション) 関数内で'this'として参照したいオブジェクト。
  3. args - (いろいろ, オプション) 関数に渡される引数(複数の引数を渡す場合は配列にすること)

戻り値:

  • () JavaScriptのタイマーID(delayを消去するため)

例:

var myFunction = function(){ alert('moo! Element id is: ' + this.id); };
//50ミリ秒待ってから、myElementがバインドされたmyFunctionを実行します。
myFunction.delay(50, myElement); //'moo! Element id is: ...'をアラート

//1秒待ってからアラートする無名関数
(function(){ alert('one second later...'); }).delay(1000);

参考情報:

Functionメソッド: periodical

指定した間隔を空けて定期的に関数を実行します。定期実行は$clear関数を利用することで停止できます。

構文:

var intervalID = myFunction.periodical([period[, bind[, args]]]);

引数:

  1. period - (, オプション) 実行の間隔。
  2. bind - (オブジェクト, オプション) 関数内で'this'として参照したいオブジェクト。
  3. args - (いろいろ, オプション) 関数に渡される引数(複数の引数が渡される場合は配列にすること)

戻り値:

  • () インターバルID(定期実行を停止するため)

例:

var Site = { counter: 0 };
var addCount = function(){ this.counter++; };
addCount.periodical(1000, Site); //Siteに秒数を付け加えます。

参考情報:

Functionメソッド: run

任意の引数と要素をバインドして関数を実行します。applyと同様ですが、単一の引数をサポートするために引数の順番が逆になっています。

構文:

var myFunctionResult = myFunction.run(args[, bind]);

引数:

  1. args - (いろいろ) 関数に渡したい引数(複数の引数を渡したい場合は、配列にすること)
  2. bind - (オブジェクト, オプション) 関数内で'this'として参照したいオブジェクト

戻り値:

  • (いろいろ) この関数が返す戻り値。

例:

引数が一つの場合:

var myFn = function(a, b, c){
    return a + b + c;
}
var myArgs = [1,2,3];
myFn.run(myArgs); //戻り値: 6

要素をバインドした場合:

var myFn = function(a, b, c) {
    return a + b + c + this;
}
var myArgs = [1,2,3];
myFn.run(myArgs, 6); //戻り値: 12

このドキュメントはMooToolsのドキュメントを元に高橋文樹が翻訳(ちょっと改変)しました。
本家と同じく、Attribution-NonCommercial-ShareAlike 3.0ライセンスで公表されています。

トップに戻る