JavaScriptのapply

このメソッドの理解には本当に時間がかかった。

手持ちのリファレンスには

現在の関数オブジェクトに渡された引数全て、
あるいは一部を他のオブジェクトに渡して呼び出すメソッドです

と書いてあるけどいくら考えてもサッパリ分からず、
いくつかのサイトや詳しそうな書籍を探してみることに。

なるほど。と思える記述があったのは以下の2つ


http://keicode.com/jsref/function.apply.phpより引用

Function.apply の第1引数を this として、Function を呼び出す。第2引数以降は、 Function への第1引数、第2引数、... となるが、値は Array として渡す。

下の例では、sayHello を call しているが、第1引数として渡した p (Person オブジェクト) が、 sayHello ファンクションの中での this になる。

function Person( name ) {
	this.name = name;
}

function sayHello( s ) {
	alert( s + this.name + '!' );
}

function ___test() {

	var p = new Person('Ichiro');
	sayHello.apply ( p, new Array('Hello, ') ); // 'Hello, Ichiro!' が表示される

}

「第1引数として渡した p (Person オブジェクト) が、 sayHello ファンクションの中での this になる。」
の部分で「なるほど!」と思えた。ってか手持ちのリファレンス、もうちょっとまともに説明を書いてほしいもんだ・・・・。


オライリー JavaScript 第5版
より引用


それにしてもJavaScriptは読みづらい・・・・・(゚ω゚ )