码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • JS之函数的属性


    文章目录

        • 1. `length`
        • 2. `name`
        • 3. `prototype`
        • 4. `caller` (非标准)
        • 5. `arguments` (非标准,且已弃用)
        • 自定义属性
        • 使用函数属性存储状态
        • 总结

    JavaScript 函数是非常强大的,因为它们不仅可以作为可调用的代码块,还可以像对象一样拥有属性。以下是一些常见的函数属性和元属性:

    1. length

    • 描述:表示函数的形参列表中的参数个数,即函数定义时的参数个数,而不是调用时传递的参数个数。
    • 示例:
    function sampleFunction(a, b, c) {}
    
    console.log(sampleFunction.length); // 输出: 3
    
    '
    运行

    2. name

    • 描述:返回函数的名称。对于匿名函数,这个属性会返回空字符串。
    • 示例:
    function namedFunction() {}
    
    console.log(namedFunction.name); // 输出: "namedFunction"
    
    const anonFunction = function() {};
    console.log(anonFunction.name); // 输出: ""
    
    '
    运行

    3. prototype

    • 描述:这是每个函数对象都有的一个属性,只有构造函数有这个属性。它指向一个对象,所有通过该构造函数创建的实例都共享这个对象的属性和方法。
    • 示例:
    function Person(name) {
      this.name = name;
    }
    
    Person.prototype.greet = function() {
      console.log('Hello, ' + this.name);
    };
    
    const john = new Person('John');
    john.greet(); // 输出: Hello, John
    
    '
    运行

    4. caller (非标准)

    • 描述: 指向调用当前函数的函数。这个属性在严格模式下不可用,因此不建议使用。
    • 示例:
    function first() {
      second();
    }
    
    function second() {
      console.log(second.caller);
    }
    
    first(); // 输出: [Function: first]
    
    '
    运行

    5. arguments (非标准,且已弃用)

    • 描述:指向传递给当前函数调用的参数。这个属性已被弃用,不推荐使用,可以使用 arguments 对象代替。
    • 示例:
    function testFunc(a, b) {
      console.log(testFunc.arguments);
    }
    
    testFunc(1, 2); // 输出: [Arguments] { '0': 1, '1': 2 }
    
    '
    运行

    自定义属性

    JavaScript 函数可以扩展自定义属性,这让函数对象更为强大:

    function add(a, b) {
      return a + b;
    }
    
    // 添加自定义属性
    add.description = "This function adds two numbers";
    add.version = "1.0.0";
    
    console.log(add.description); // 输出: "This function adds two numbers"
    console.log(add.version);     // 输出: "1.0.0"
    
    '
    运行

    使用函数属性存储状态

    在某些情况下,你可以利用函数属性来存储状态或其他信息:

    const counter = (function() {
      let count = 0;
    
      function counterFunc() {
        count += 1;
        return count;
      }
    
      counterFunc.reset = function() {
        count = 0;
      };
    
      counterFunc.getCount = function() {
        return count;
      };
    
      return counterFunc;
    })();
    
    console.log(counter()); // 输出: 1
    console.log(counter()); // 输出: 2
    console.log(counter.getCount()); // 输出: 2
    counter.reset();
    console.log(counter()); // 输出: 1
    
    '
    运行

    总结

    JavaScript 函数不仅仅是可调用的代码块,它们也是对象,具备一些特殊的内建属性如 length、name、prototype以及可以自定义的属性。这些属性使得函数在 JavaScript 中更加灵活和强大,允许开发者以面向对象的方式处理函数行为和状态。理解这些属性,有助于更有效地编写和使用函数。

  • 相关阅读:
    Java面试大厂名企高频真题--Spring 注解
    PyQt5快速开发与实战 4.5 按钮类控件 and 4.6 QComboBox(下拉列表框)
    ES (ElasticSearch) 简易解读(二)ES安装及集群的搭建
    GALIL运动控制卡维修控制器维修DMC-1840
    Jmeter接口测试和性能测试
    BYOL for Audio: Exploring Pre-trainedGeneral-purpose Audio Representations笔记
    强制结束subprocess.Popen开启的任务
    git撤回多个push到远程仓库的commit
    使用全局配置处理字段名和属性名不一致的情况+使用resultMap处理字段名和属性名不一致的情况
    爬虫与云服务器云数据库
  • 原文地址:https://blog.csdn.net/shifff/article/details/140462368
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号