Function【関数】オブジェクト

メモ

コンストラクタ

構文説明
[ new ] Function ( p1, p2, … , pn, body )コンストラクタ

プロパティ 一覧

下記 参照
プロパティ説明
Function.caller 呼び出した関数 (参考:arguments.caller)
Function.prototype.constructorコンストラクタ定義
Function.length引数の定義数 (参考:arguments.length【呼び出し時の引数の数】)
Function.name 関数名
Function.prototypeプロトタイプ

メソッド 一覧

メソッド説明
Function.prototype. [@@hasInstance] (V)
Function.prototype. apply ( thisArg, argArray ) 関数呼出し (配列引数)
Function.prototype. bind ( thisArg, ...args ) 関数生成
Function.prototype. call ( thisArg, ...args ) 関数呼出し (可変引数)
Function.prototype.toString ( )文字列変換

例 (プロパティ)

const func0 = Function("return;");
const func1 = Function("x", "return x;");
const func2 = Function("x, y", "return x + y;");
const func3 = Function("x, y, z", "return x + y + z;");

console.log(func0.prototype.constructor);
// 出力:ƒ anonymous(
// 出力:) {
// 出力:return;
// 出力:}
console.log(func0.length);  // 出力:0
console.log(func0.name);    // 出力:anonymous
console.log(func0.prototype);
// 出力:constructor: ƒ anonymous( )
// 出力:__proto__: Object

console.log(func1.prototype.constructor);
// 出力:ƒ anonymous(x
// 出力:) {
// 出力:return x;
// 出力:}
console.log(func1.length);  // 出力:1
console.log(func1.name);    // 出力:anonymous
console.log(func1.prototype);
// 出力:constructor: ƒ anonymous(x )
// 出力:__proto__: Object

console.log(func2.prototype.constructor);
// 出力:ƒ anonymous(x, y
// 出力:) {
// 出力:return x + y;
// 出力:}
console.log(func2.length);  // 出力:2
console.log(func2.name);    // 出力:anonymous
console.log(func2.prototype);
// 出力:constructor: ƒ anonymous(x, y )
// 出力:__proto__: Object

console.log(func3.prototype.constructor);
// 出力:ƒ anonymous(x, y, z
// 出力:) {
// 出力:return x + y + z;
// 出力:}
console.log(func3.length);  // 出力:3
console.log(func3.name);    // 出力:anonymous
console.log(func3.prototype);
// 出力:constructor: ƒ anonymous(x, y, z )
// 出力:__proto__: Object
function funcA(x, y = 20, z = 30) {
  console.log(arguments.length);
}

function funcB(...args) {
  console.log(arguments.length, args.length);
}

console.log(funcA.name);    // 出力:funcA
console.log(funcA.length);  // 出力:1
funcA(1);                   // 出力:1
funcA(1, 2);                // 出力:2
funcA(1, 2, 3);             // 出力:3

console.log(funcB.name);    // 出力:funcB
console.log(funcB.length);  // 出力:0
funcB();                    // 出力:0 0
funcB(1);                   // 出力:1 1
funcB(1, 2);                // 出力:2 2
funcB(1, 2, 3);             // 出力:3 3