JavaScript/Function

カテゴリ:Book:JavaScript#Function%20
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.length
    Function.name

    静的アクセサ

    静的メソッド

    Function.prototype()

    継承関係

    Functionのインスタンスプロパティ

    Function.prototype.arguments
    Function.prototype.caller
    Function.prototype.length
    Function.prototype.name
    Function.prototype.prototype

    Functionのインスタンスアクセサ

    Functionのインスタンスメソッド

    Functionのインスタンスプロパティ

    Function.prototype.length
    Function.prototype.name

    Functionのインスタンスアクセサ

    get Function.prototype.arguments
    get Function.prototype.caller

    Functionのインスタンスメソッド

    Function.prototype.apply()
    Function.prototype.bind()
    Function.prototype.call()
    Function.prototype.constructor()
    Function.prototype.toString()
    Function.prototype [ Symbol.hasInstance ] ()

    Objectのインスタンスプロパティ

    Objectのインスタンスアクセサ

    get Object.prototype.__proto__

    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()
    カテゴリ:JavaScript
    カテゴリ:Book:JavaScript カテゴリ:JavaScript カテゴリ:Pages using the JsonConfig extension