function 拥有的方法和属性

在 JavaScript 中,Function 是一种特殊的对象类型,因此函数也拥有自己的方法和属性。这些方法和属性可以分为以下两类:

1. Function 对象的实例方法

这些方法可以直接通过函数实例调用。

  1. apply(thisArg, argsArray)

    • 调用函数,并指定 this 值和参数数组。
    • 示例:
      function greet(greeting, name) {
          console.log(`${greeting}, ${name}`);
      }
      greet.apply(null, ['Hello', 'Alice']); // "Hello, Alice"
      
  2. call(thisArg, ...args)

    • 调用函数,并指定 this 值和参数列表。
    • 示例:
      function greet(greeting, name) {
          console.log(`${greeting}, ${name}`);
      }
      greet.call(null, 'Hello', 'Alice'); // "Hello, Alice"
      
  3. bind(thisArg, ...args)

    • 返回一个新函数,并将 this 绑定到指定的值,同时可以预设部分参数。
    • 示例:
      function greet(greeting, name) {
          console.log(`${greeting}, ${name}`);
      }
      const sayHelloToAlice = greet.bind(null, 'Hello', 'Alice');
      sayHelloToAlice(); // "Hello, Alice"
      
  4. toString()

    • 返回函数的字符串表示(通常是函数的源代码)。
    • 示例:
      function greet() {
          console.log('Hello');
      }
      console.log(greet.toString());
      // "function greet() { console.log('Hello'); }"
      
  5. length

    • 返回函数定义时的形参个数(不包括剩余参数和默认值参数)。
    • 示例:
      function add(a, b) {}
      console.log(add.length); // 2
      

2. Function 对象的静态方法

这些方法直接作用于 Function 构造函数。

  1. Function.prototype

    • 所有函数共享的原型对象,允许扩展函数的共有行为。
    • 示例:
      Function.prototype.describe = function () {
          console.log(`This function has ${this.length} parameters.`);
      };
      function test(a, b) {}
      test.describe(); // "This function has 2 parameters."
      
  2. Function 构造函数

    • 可以动态创建函数(不推荐,容易导致安全和性能问题)。
    • 示例:
      const sum = new Function('a', 'b', 'return a + b');
      console.log(sum(1, 2)); // 3
      

Function 对象的原有属性

除了方法,函数对象还具有以下属性:

  1. name

    • 返回函数的名称(匿名函数返回空字符串)。
    • 示例:
      function greet() {}
      console.log(greet.name); // "greet"
      
      const anon = function () {};
      console.log(anon.name); // ""
      
  2. prototype

    • 每个函数(构造函数)都有一个 prototype 属性,指向其原型对象。
    • 示例:
      function Person() {}
      console.log(Person.prototype); // {}
      
  3. constructor

    • 返回创建对象的构造函数的引用。
    • 示例:
      function Test() {}
      const instance = new Test();
      console.log(instance.constructor === Test); // true
      

总结

  • 实例方法applycallbindtoString
  • 静态方法Function 构造函数、Function.prototype
  • 属性lengthnameprototypeconstructor

这些方法和属性是 Function 对象的基础功能,广泛用于函数调用、上下文绑定和动态行为扩展。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值