JavaScript/Function
表示
- JavaScript > Functionオブジェクト
Functionオブジェクト
[編集]プロパティ
[編集]Function.length
[編集]この関数が取る引数の数を返す。
function foo(a,b,c){ return; } console.log( foo.length ); // 3が表示される。
指定されている引数が3つであるからいって、引数が3つである必要は無い。
function foo(a, b, c) { if (a === void 0) a = 2; if (b === void 0) b = 3; if (c === void 0) c = 5; return `a: ${a}, b: ${b}, c:${c}`; } console.log( foo() ); // a: 2, b: 3, c:5 console.log( foo(6) ); // a: 6, b: 3, c:5 console.log( foo(8,2) ); // a: 8, b: 2, c:5 console.log( foo(1,2,3) );// a: 1, b: 2, c:3
省略された引数には undefind が入る。ここでは void 0 と比較して省略を判断している。
引数の省略の処理は、ES6 以降は次のように書くことも出来る。
function foo(a = 2, b = 3, c = 5) { return `a: ${a}, b: ${b}, c:${c}`; } console.log( foo() ); // a: 2, b: 3, c:5 console.log( foo(6) ); // a: 6, b: 3, c:5 console.log( foo(8,2) ); // a: 8, b: 2, c:5 console.log( foo(1,2,3) );// a: 1, b: 2, c:3
Function.name
[編集]この関数の名前を返す。
function foo(a,b,c){ return; } console.log( foo.name ); // fooが表示される。 const bar = function(a,b,c){ return; } console.log( bar.name ); // barが表示される。 let baz = function(a,b,c){ return; } console.log( baz.name ); // bazが表示される。
関数定義だけでなく、関数式でも左辺値の変数の名前が入る。
Function.prototype
[編集]インスタンスメソッド
[編集]メソッド | 解説 |
---|---|
Function.prototype.apply() | 指定された this 値と配列(または配列風オブジェクト)として提供された引数で関数を呼び出します。
|
Function.prototype.bind() | 呼び出されたときに指定された this 値を持つ新しい関数を生成します。
|
Function.prototype.call() | 指定された this 値と個別に提供された引数で関数を呼び出します。
|
Function.prototype.constructor() | 関数オブジェクトを作成した Function コンストラクターへの参照を返します。
|
Function.prototype.toString() | 関数を表す文字列を返します。 |
Function.prototype.apply(thisArg, argArray)
[編集]callメソッドと同じく、メソッドを実行できる。 callメソッドとの違いは、引数に配列を与えると、これを展開して実行することである。
例えば、次の様に配列を自動で展開して実行可能である。
Math.max.apply( null, [1,5,8,9,2,10,30,5] );
スプレッド構文を使うとこのようにも書ける。
Math.max(...[1,5,8,9,2,10,30,5]);
Function.prototype.arguments
[編集]Function.prototype.bind
[編集]Function.prototype.call(thisArg [ , arg1 [ , arg2, … ] ] )
[編集]callはその関数を実行する。 また、関数に引数を与えたい場合には、callメソッドの第2引数以降に指定をする。 つまりは次の2文は等価である。
console.log( a("Hello") ); console.log( a.call( null, "Hello") );
callメソッドの存在意義は、第1引数があり、ここで親オブジェクトを指定可能である所である。 そのため、thisを一時的に上書きする等の使用法がある。
function foo(){ this.x=10; (function(){ console.log( this.x ); // 10が表示 }).call(this); }
Function.prototype.caller
[編集]Function.prototype.constructor
[編集]Function.prototype.length
[編集]Function.prototype.name
[編集]Function.prototype.toString
[編集]関数の処理内容を文字列で返す。
下位階層のページ
[編集]脚註
[編集]
外部リンク
[編集]附録
[編集]静的プロパティ
[編集]静的アクセサ
[編集]静的メソッド
[編集]継承関係
[編集]Functionのインスタンスプロパティ
[編集]- Function.prototype.arguments
- Function.prototype.caller
- Function.prototype.length
- Function.prototype.name
- Function.prototype.prototype
Functionのインスタンスアクセサ
[編集]Functionのインスタンスメソッド
[編集]Functionのインスタンスプロパティ
[編集]Functionのインスタンスアクセサ
[編集]Functionのインスタンスメソッド
[編集]- Function.prototype.apply()
- Function.prototype.bind()
- Function.prototype.call()
- Function.prototype.constructor()
- Function.prototype.toString()
- Function.prototype [ Symbol.hasInstance ] ()
Objectのインスタンスプロパティ
[編集]Objectのインスタンスアクセサ
[編集]Objectのインスタンスメソッド
[編集]- Object.prototype.__defineGetter__()
- Object.prototype.__defineSetter__()
- Object.prototype.__lookupGetter__()
- Object.prototype.__lookupSetter__()
- Object.prototype.constructor()
- Object.prototype.hasOwnProperty()
- Object.prototype.isPrototypeOf()
- Object.prototype.propertyIsEnumerable()
- Object.prototype.toLocaleString()
- Object.prototype.toString()
- Object.prototype.valueOf()