函数的apply、call方法和length属性

JavaScript为函数对象定义了两个方法:apply和 call,它们的作用都是将函数绑定到另外一个对象上去运行,两者仅在定义参数的方式有所区别:
Function.prototype.apply(thisArg,argArray);
Function.prototype.call(thisArg[,arg1[,arg2…]]);
从函数原型可以看到,第一个参数都被取名为 thisArg,也就是说,所有函数内部的 this 指针都会被赋值为 thisArg,这就达到了将函数作为另外一个对象的方法运行的目的。两个方法除了 thisArg 参数,都是为 Function 对象传递的参数。下面的代码说明了 apply 和 call 方法的工作方式:
//定义一个函数func1,具有属性p和方法A 
function func1(){ 
  
this.p="func1-";   
  
this.A=function(arg){ 
    alert(
this.p+arg); 
  } 
} 
//定义一个函数func2,具有属性p和方法B 
function func2(){ 
  
this.p="func2-"; 
  
this.B=function(arg){ 
    alert(
this.p+arg); 
  } 
} 
var obj1=new func1(); 
var obj2=new func2(); 
obj1.A(
"byA");         //显示func1-byA 
obj2.B("byB");         //显示func2-byB 
obj1.A.apply(obj2,["byA"]);     //显示func2-byA,其中[“byA”]是仅有一个元素的数组,下同 
obj2.B.apply(obj1,["byB"]);     //显示func1-byB 
obj1.A.call(obj2,"byA");      //显示func2-byA 
obj2.B.call(obj1,"byB");      //显示func1-byB 
可以看出, obj1的方法A被绑定到obj2运行后, 整个函数A的运行环境就转移到了obj2,即this指针指向了obj2。同样obj2的函数 B也可以绑定到 obj1对象去运行。代码的最后 4 行显示了apply和call函数参数形式的区别。
与 arguments 的 length属性不同,函数对象的还有一个参数相关的属性 length,它表示函数定义时所指定参数的个数,而非调用时实际传递的参数个数。 例如下面的代码将显示2: 
function sum(a,b){ 
  
return a+b; 
} 
alert(sum.length); 
智能体在车联网中的应用:第9天 核心工具链与仿真世界:SUMO交通仿真入门——从安装到构建你的第一个虚拟十字路口 摘要 SUMO是一款开源微观交通仿真工具,为车联网和自动驾驶算法开发提供高效安全的测试环境。文章详细介绍了SUMO的核心概念、安装方法及实战应用。在Ubuntu或Windows系统安装SUMO后,可通过netedit工具构建十字路口路网,包括创建节点、连接边、设置交通信号灯等步骤。随后通过编写.rou.xml文件定义车辆类型、路线和车流,实现动态交通场景模拟。SUMO支持与外部程序交互,能复现真实场景、进行极端测试和算法验证,是车联网研究的理想数字沙盘。 阅读详情

相关推荐

vcs 覆盖率收集1——三种覆盖率类型、covergroup、bins、数据采样、覆盖率选项

介绍各种覆盖率,以及如何编写覆盖率收集的代码

qq_42135020的博客 1万+

Java中的长度length、length()、size()

Java中有三个常用的与长度相关的属性和方法,分别是length、length()、size()。今天记录一下它们之间的区别。 length属性 单独的length是针对 数组 而言,表示声明数组的长度,也即数组中元素的个数,它是数组的一个属性,而不是方法。 public static void main(String[] args) { int[] array = new int[]{1...

sinat_40380134的博客 7942

python机器人编程——用python实现一个写字机器人

本篇我们构建一个可以跟人一样写字的机器人python软件。实现如下功能:打开一个写字板,人类在屏幕上写或画出任意形状,机器人同步在纸面上画出和人类一样的形状,就好像人类在远程操控机械臂,又或是机械臂是人的另一只手。这个软件是可以扩展的,如果连上互联网,可以实现人在北京写了一行字,在上海的机器臂同时也在自己的本子上写了一行字。

JAMES费的空间 7992

关于js中 function中的length属性和call,apply方法

其实js中function自身的属性和方法还是比较多的,比如打开console它会给你一大堆的提示               这里重点只说说length属性和call和apply(important),举个例子先:  function fn1(){        console.log('fn1');     }         function fn2(a,b){    ...

u014772531的博客 197

2026年数字IC设计华为笔试带答案解析

这篇文章是一份数字IC设计工程师笔试的试卷结构和部分题目解析。试卷包含单选题31题(每题2分)、多选题10题(每题4分)和简答/编程题4题(每题7分),总分130分,考试时长120分钟。 摘要重点: 试卷涵盖数字IC设计的关键知识点,包括Verilog语法、时序逻辑、状态机设计、跨时钟域处理等; 题目解析详细说明了各选项的正确性,如非阻塞赋值特性(D错误)、功耗影响因素(C与组合逻辑级数弱相关)等; 包含实际工程问题,如DDR4接口电平(SSTL-1.2)、卡诺图变量排序(格雷码)等; 部分题目考察基础概念

Open 368

AI应用质量工程实践:从评估到监控的完整体系构建

在软件工程领域,质量保障体系是确保产品稳定可靠的核心机制,涉及度量指标、保障流程和工具链的完整闭环。随着生成式AI应用的快速发展,如何将传统软件工程中的质量门禁思想引入AI领域,成为工程实践的关键挑战。其核心原理在于构建可量化、可监控、可改进的质量评估框架,通过自动化测试、持续监控和反馈优化来管理AI输出的不确定性。这一技术价值在于将AI应用从原型阶段推向产品化,确保输出的一致性、安全性和可靠性。在实际应用场景中,开发者需要从功能性、非功能性、一致性和合规性四个维度构建评估体系,并借助LLM-as-a-Ju

weixin_28728279的博客 294

JavaScript中的函数:函数的apply、call方法和length属性

转:http://www.smallrain.net/study_show.asp?id=710  函数的apply、call方法和length属性  JavaScript为函数对象定义了两个方法:apply和call,它们的作用都是将函数绑定到另外一个对象上去运行,两者仅在定义参数的方式有所区别:  Function.prototype.apply(thisArg,argArray);

fendou4533的专栏 412

OpenClaw实战-行政与HR必备:AI驱动的办公自动化

智能会议纪要自动生成会议时间智能协调自动提醒和跟进简历智能筛选和匹配度分析面试安排自动化入职办理流程化通知公告一键发布发票识别和报销辅助资产管理数字化让AI处理繁杂的事务性工作,让您有更多时间专注于更有价值的战略和管理任务。

gaoxiang_120的专栏 219

函数的属性length、prototype和方法call()、apply()

函数的属性length、prototype和方法call()、apply() length指的是该函数所期望传递进来的参数个数。 function fun0(){}             //0 function fun1(num1){}         //1 function fun2(num1,num2){}    //2 //prototype function MyObje

octopus的专栏 1281

【AUTOSAR-E2E】-2.3-配置E2E:基于E2EPW配置一个RX接收的Signal Group(使用E2E Profile 1)

《共13页精讲》:此法也适用于E2E Profile 4/5/6/7/11/22 目录 1 检查CAN Matrix Arxml/DBC是否满足E2E需求 2 在DaVinci Developer中为Port添加E2E保护 3 在DaVinci Configurator settings设置 4 如何使用应用层的E2E保护 5 结尾 <--返回「Autosar_BSW高阶配置」总目录--> <--返回「Autosar_BSW高阶配置」专栏主页--> <-.

「汽车电子助手」的博客 3951

【四足机器人项目实战】四足机器人运动学、动力学模型

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录系列文章目录前言一、四足机器人实际模型的物理难点二、四足机器人运动学模型1.方法一:DH法建立运动学模型(1)运动学建模构型方法(2)运动学模型描述方法1、基于DH法四足机器人单腿运动学模型公式推导(0)DH法科普1)原理2)实现过程3)评价(1)四足机器人的建模规则、坐标系定义及实物参数确定1)标准Denavit-Hartenberg法建模规则2)单腿运动学模型坐标系定义示意图及简化模型3)

qq_35635374的博客 1万+

JavaScript中函数的属性和方法(length、prototype、apply()、call()和bind())

函数内部属性 在函数内部有两个特殊的对象:arguments 和 this 。 arguments 的主要用途是用来保存函数参数,但这个对象还有一个名叫 callee 的属性,该属性是一个指针,指向拥有这个 arguments 对象的函数。 this 与 Java 中的 this 大致类似,引用的是函数执行的环境对象。 函数属性和方法 1. length length 属性表示函数希望接受的命名参...

TalonZhang的博客 400

UltraScale系列底层结构(3)——URAM概述

在UltraScale+™ 器件中,除了我们在常规熟悉的BRAM资源以外,还额外提供了URAM(UltraRAM)资源。 UltraRAM 是一种单时钟同步操作的高密度存储器,每个 UltraRAM 块可存储 288 Kb 数据,配置为 4K x 72 位的存储单元,其容量是 Block RAM 的八倍。虽然 UltraRAM 内部使用单端口存储单元,但通过在一个时钟周期内顺序执行端口 A 和端口 B 的操作,实现了双端口功能。

apple_53311083的博客 2831

javascript:函数的apply,call方法和length属性

 看js的资料,随手记下一些认为实用的东东,以飨和我一样正在学习的诸位看官。      “JavaScript 为函数对象定义了两个方法:apply 和call,它们的作用都是将函数绑定到另外一个对象上去运行,两者仅在定义参数的方式有所区别:      Function.prototype.apply(thisArg,argArray); Function.prototype.call(thi...

weixin_34152820的博客 104

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

函数属性和方法

我们大家都知道,一个函数它有属性和方法,每个函数都包含两个属性:length和prototype。 length属性 length属性表示函数希望接收的命名参数的个数。 举个例子 function sayName(name){ alert(name); } function sum(sum1,sum2){ return num1 + num2; } funct...

Passerby的博客 2142

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

红宝书总结-this,length,apply,call

this 引用的是函数执行的环境对象 window.color = "red"; var o = {color:"blue"}; function sayColor(){ alert(this.color); } sayColor();//"red" o.sayColor = sayColor; o.sayColor();//"blue" 复制代码 length:每个函数都包含两...

weixin_33859844的博客 186

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

JavaScript函数的属性和方法

ECMAScript中的函数是对象,因此函数也有属性和方法。每个函数都有两个属性:length和prototype。length属性表示函数希望接收的命名参数的个数。每个函数都包含两个非继承而来的方法:apply()和call(),用途都是在特定的作用域中调用函数,实际上等于设置函数体内this对象的值。apply()方法接收两个参数:一个是在其中运行函数的作用域,另一个是参数数组。第二个可以是A...

一只咸鱼 1259

方法apply作用于对象sort时失败_JavaScript中函数的属性和方法

JavaScript函数属性和方法函数属性和方法JavaScript中对象都会有属性和方法,函数是对象,因此函数也有属性和方法。每个函数都包含两个属性:length 和 prototype。其中,length 属性表示函数希望接收的命名参数的个数```function sayName(name){ alert(name);}function sum(num1, num2){ return num1...

weixin_39815943的博客 175

函数属性与方法

1.ECMAScript 中的函数是对象,因此有属性和方法。每个函数都有两个属性:length 和 prototype。其中,length 属性保存函数定义的命名参数的个数。 2.以上代码定义了 3 个函数,每个函数的命名参数个数都不一样。 3.sayName()函数有 1 个命名参数,所以其 length 属性为 1。 4.类似地,sum()函数有两个命名参数,所以其 length 属性是 2。而 sayHi()没有命名参数,其 length 属性为 0。 5.prototype 属性也许是 ECMAS

lxy9876的博客 905

函数的属性和方法

JavaScript 中的函数是对象,因此函数也有属性和方法。 属性 每个函数都包含两个属性:length 和 prototype。 length length 属性表示函数希望接收的命名参数的个数,如下面的例子所示。 function sayName(name){ console.log(name); } function sum(num1, num2){ return num1 + num2; } function sayHi(){ console.log("hi"); }

m0_53698336的博客 272
上一篇: Prototype框架之$$函数
下一篇: 事件执行顺序 alpha
cheneyforever
博客等级 码龄22年 3粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值