Yanor.net/
Wiki
Blog
GitHub
Sandbox
開始行:
* call()とapply() [#q5687226]
** call() [#bc574ce1]
function func(v) {
alert( v + this.name );
}
func('hello, ');
↑ではthis.nameが参照出来ないが、
var obj = { name : 'Taro' };
var func = function (v) { alert( v + this.name ); };
func.call(obj, 'Hello, ');
↑のようにcall()を使うと任意のオブジェクト { name : 'taro'...
これを別の方法で実装すると、
var obj = { name : 'Taro' };
obj.func = function (v) { alert( v + this.name ); };
obj.func('Hello. ');
delete obj.func;
となる。
** apply() [#dc1e7f08]
apply()は第2引数を配列で取り(['Hello, ','Mr.'])、適用さ...
var obj = { name : 'Taro' };
var func = function (v1, v2) { alert( v1 + v2 + this.nam...
func.apply(obj, [ 'Hello, ', 'Mr.' ]);
これはcall()でも以下のようにして実装出来る。
var obj = { name : 'Taro' };
var func = function (v1, v2) { alert( v1 + v2 + this.nam...
func.call( obj, 'Hello, ','Mr.' );
引数は省略して、argumentsを利用しても良い。
var obj = { name : 'Taro' };
var func = function () { alert( arguments[0] + argumen...
var caller = function () { func.apply( obj, arguments ) };
caller( 'Hello, ','Mr.' );
終了行:
* call()とapply() [#q5687226]
** call() [#bc574ce1]
function func(v) {
alert( v + this.name );
}
func('hello, ');
↑ではthis.nameが参照出来ないが、
var obj = { name : 'Taro' };
var func = function (v) { alert( v + this.name ); };
func.call(obj, 'Hello, ');
↑のようにcall()を使うと任意のオブジェクト { name : 'taro'...
これを別の方法で実装すると、
var obj = { name : 'Taro' };
obj.func = function (v) { alert( v + this.name ); };
obj.func('Hello. ');
delete obj.func;
となる。
** apply() [#dc1e7f08]
apply()は第2引数を配列で取り(['Hello, ','Mr.'])、適用さ...
var obj = { name : 'Taro' };
var func = function (v1, v2) { alert( v1 + v2 + this.nam...
func.apply(obj, [ 'Hello, ', 'Mr.' ]);
これはcall()でも以下のようにして実装出来る。
var obj = { name : 'Taro' };
var func = function (v1, v2) { alert( v1 + v2 + this.nam...
func.call( obj, 'Hello, ','Mr.' );
引数は省略して、argumentsを利用しても良い。
var obj = { name : 'Taro' };
var func = function () { alert( arguments[0] + argumen...
var caller = function () { func.apply( obj, arguments ) };
caller( 'Hello, ','Mr.' );
ページ名: