首页 > 其他分享 >JS函数调用的5种模式

JS函数调用的5种模式

时间:2023-07-24 11:55:17浏览次数:30  
标签:function console name sum 模式 JS 函数调用 log

函数是经常会用的工具, 这里总结一下关于在 js 中的 5种函数调用的模式如下:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script>
    // 函数调用5种模式

    // 1. 函数声明调用模式
    function add(a, b) {
      return a + b
    }

    // 2. 匿名函数调用模式
    var sum = function(a, b) {
      return a + b
    }
    console.log(sum(3, 5))

    var sub = function (a, b) {
      return a - b
    }

    console.log('add: ', add(3, 5))
    console.log('sub: ', sub(3, 5))

    // 3. 方法调用模式
    var obj = {
      name: 'youge',
      getName: function () {
        return this.name
      }
    }

    console.log(obj.getName())

    // 若在某个方法中返回的是函数对象本身 this 则可以进行链式调用
    var obj2 = {
      name: 'youge2',
      getName: function () {
        console.log(this.name)
      },
      setName(name) {
        this.name = name 
        return this
      }
    }

    obj2.setName('cj').getName()

    // 4. 构造器调用模式
    function Person(name) {
      this.name = name
    }
    // 函数定义在其原型上
    Person.prototype.getName = function () {
      return this.name
    }
    // 通过对象实例进行调用
    var youge = new Person('youge')
    console.log(youge.name)

    // 5. call(), apply函数调用模式
    function sum(a, b) {
      console.log(a + b) 
    }
    // 定义一个对象 dog, 当 sum 调用时, this 则会指向 dog
    var dog = {}
    sum.call(dog, 1, 2)
    sum.apply(dog, [1, 2])

  </script>
</body>
</html>

标签:function,console,name,sum,模式,JS,函数调用,log
From: https://www.cnblogs.com/chenjieyouge/p/17576869.html

相关文章

  • JSON化------日期类型转JSON后变为时间戳
    我们在进行对象JSON化的时候(其中包含一些日期类型字段)日期类型在进行JSON的时候会转换为时间戳解决JSON.parse(JSONObject.toJSONStringWithDateFormat(要json的值,"yyyy-MM-ddHH:mm:ss")).toString(); ......
  • 洛谷AT_jsc2019_qual_e Card Collector 题解
    题目链接CardCollector-洛谷|计算机科学教育新生态(luogu.com.cn)思路将每一行、每一列转化为点,第i行第j列的卡牌转化为i->j+m(m为行数)的有向边。总共会抽取m+n(m为行数,n为列数)张牌,每个点的出度为1。结果图为基环森林;那么题目就转化为求最大基环森林。代码1#include......
  • js直接下载PDF
    1、前端引入js <scripttype="text/javascript"src="${pageContext.request.contextPath}/modules/util/downDoc/html2pdf.js"></script>2、js方法html定义div$("#downPrint").click(function(){exportPdf();}......
  • 快速切换 nodejs 的版本
    最近在开发一个常驻进程、定时任务统一调度系统,以应对开发在进程管理方面遇到的各种复杂问题。组里开发项目,一般来说是一个人承包整个项目,包括调度器设计,还有后台系统。我还有一部分工作,是队列相关的信息,这个由监控同学负责,到时候我后台聚合他的数据一并展示。然后我就遇到问题......
  • 初入 H5 Canvas 框架 Konva.js
    什么是KonvaKonva.js是一个H5Canvas的JavaScript框架,我们可以通过制作桌面端和移动端的apps。Konva支持动画、转换、节点嵌套、图层、过滤、缓存、事件(桌面端和移动端)等。在Konva中,所有的图形都存在于stage中,即便是你的app使用了成百上千的shapes(图形)也可以在s......
  • 一句话设计模式
    创建型模式(5种)单例模式publicstaticreadonlyUserAdministrator=newUser("admin");原型模型INewObjectnewObj=protoTpe.Clone();工厂模式IProductproduct=Factory.GetProduct("请输入产品名称");简单工厂模式(不算23种里面)工厂方法模式IFactoryfactory=newGuoCh......
  • 关于使用RocketMQ搭建多Master多Slave模式(同步)集群时遇到的问题
    搭建多Master多Slave模式(同步)集群时的java.lang.NullPointerException异常一、运行环境等基本描述(问题产生原因是权限问题,即权限不够导致无法启动broker,甚至broker线程无法通过jps命令查出。下面阐述分析思路)1.1)操作系统:Linux虚拟机:VMwareWorkstation16Pro、WSL ......
  • nodejs sqlite报错 typeorm[ Expression tree is too large (maximum depth 1000)]
    最近在给公司开发一个工具时,使用SQLite,然后突然发现报错:(node:16195)UnhandledPromiseRejectionWarning:QueryFailedError:SQLITE_ERROR:Expressiontreeistoolarge(maximumdepth1000)athandler(/snapshot/server-work/node_modules/typeorm/driver/sqlite/Sql......
  • 查看mysql模式
    查看MySQL模式的流程本文将介绍如何通过命令行和SQL语句查看MySQL数据库的模式。步骤下面是查看MySQL模式的流程表格:步骤描述1连接到MySQL服务器2选择要查看的数据库3查看数据库中的所有表4查看表的结构5查看表的数据6查看表的索引7查看表的......
  • 十四、消费模式和负载均衡策略
    消费模式RocketMQ消费者都是以消费组去消费消息。如果多个消费者设置了相同的ConsumerGroup,我们认为这些消费者在同一个消费组内。在ApacheRocketMQ有两种消费模式,分别是:集群消费模式:当使用集群消费模式时,RocketMQ认为任意一条消息只需要被消费组内的任意一个消费者处理即......