javascript中apply和call方法比较及其妙用

JavaScript对象创建模式实例汇总 主要介绍了JavaScript对象创建模式,结合实例形式总结分析了JavaScript常见的对象创建模式,包括工厂模式、构造函数模式、原型模式、动态原型模式、寄生构造函数模式、稳妥构造函数模式等,需要的朋友可以参考下 立即下载

1. apply调用初始化方法

function Me(name,age){
	this.name = name;
	this.age = age;
	// apply的意思就是将Me的init方法在‘this’对象上调用,并且参数为arguments数组
	this.init.apply(this,arguments); 
}
Me.prototype.init = function(name,age,gender){
	this.gender = gender;
}
var me = new Me("AAA",12,"F");
console.log(me.name,me.age,me.gender); //这三个都正常打印出来

2. 用call  调用

效果与apply一样,但是call的参数需要一个一个的列出来,不能像apply一样传个参数数组

function Me(name,age){
	this.name = name;
	this.age = age;
	//将apply换成call	
	this.init.call(this,age,name);
}
Me.prototype.init = function(name,age,gender){
	this.gender = gender;
}
var me = new Me(55,"BBB","M");  //注意顺序,与Me的构造函数不一致
console.log(me);

3. apply机智的用法

apply会自行解析arguments数组,恰好利用这一点
/**
 * 	a) Math.max 可以实现得到数组中最大的一项  
 *	因为Math.max 参数里面不支持Math.max([param1,param2]) 也就是数组  
 *	但是它支持Math.max(param1,param2,param3…),所以可以根据刚才apply的那个特点来解决 
*/

var max=Math.max.apply(null,array); //这样轻易的可以得到一个数组中最大的一项    

/**
 *	b)Array.prototype.push 可以实现两个数组合并    
 *	同样push方法没有提供push一个数组,但是它提供了push(param1,param,…paramN)
 *	所以同样也可以通过apply来装换一下这个数组
*/
  
var arr1=new Array("1","2","3");   
var arr2=new Array("4","5","6");   
Array.prototype.push.apply(arr1,arr2);   


参考:http://blog.youkuaiyun.com/business122/article/details/8000676



自定义串口通讯协议 自定义串口通讯协议的实现方法 阅读详情

相关推荐

Vcenter安全加固-防火墙-只允许特定的IP地址访问Vcenter

3、此时除了被允许的IP地址可以访问之外,其余地址均被防火墙阻挡。2、再进行0.0.0.0/0匹配所有其他IP地址进行拒绝访问。1、只需要关注接受和拒绝即可。2、其余选择不是这个场景使用的。1.只允许特定的IP地址访问Vcenter。1、登录Vcenter管理界面。2、点击防火墙-添加。

博然的宝藏库 7280

解析 this.initialize.apply(this, arguments)

一、 起因 那天用到prototype.js于是打开看看,才看几行就满头雾水,原因是对js的面向对象不是很熟悉,于是百度+google了一把,最后终于算小有收获,写此纪念一下^_^。 prototype.js代码片段 代码如下:var Class = { create: function() { return function() { this.i...

weixin_30725315的博客 351

树莓派小车:智能捡球小车——Q宝

在遇到第一个直角右转口后,进入阶段二,阶段二是智能小车减速,因为速度过快可能导致车头下方的检测出现小毛病,小车进入第一个左拐路口,增加左转时间,然后直行,到横线处,小车停止,进入阶段三,小车先识别前方的球类,然后倒车到拐口处,原地右转,之后的识别也是类似的操作,随后有一个简单的避障功能,进行球类识别测试时,在本地测试效果良好,但是投入实际应用中时,受到光线等因素的影响,识别球类的能力大大下降。小车摄像头精度不够,视角较小,在识别人脸时,需要不断移动人脸照片,让摄像头能够抓取人脸。在第一阶段的循迹过程中,

dfbsszxzv的博客 1932

浅析prototype框架中的this.initialize.apply(this, arguments)

javascript框架prototype里利用apply来创建一个定义对象的模式: var Class = {   create: function() {     return function() {       this.initialize.apply(this, arguments);     }   } }; 应用Class var O = Class.create

LoveStudy_girl的博客 1462

Zemax实战:20×超高清变焦镜头设计全流程解析(从架构到制造)

本文详细解析了使用Zemax软件设计一款20倍变焦比、恒定F2.8光圈8K超高清镜头的全流程。从应对恒定光圈、宽光谱与8K解析力三大挑战的初始架构规划,到构建多重组态模型、分七阶段进行像差优化与公差分析,最终跨越制造鸿沟,为广播级影视与高精度工业检测应用提供了实战指南。

sun99的博客 551

TMC2209的UART模式详解:如何用串口调试助手配置细分和电流(避坑指南)

本文深入解析TMC2209步进电机驱动器的UART模式,详细讲解如何通过串口调试助手配置细分和电流,包括硬件连接、通信协议、关键寄存器设置及高级功能应用。提供实战避坑指南,帮助开发者优化步进电机控制性能,适用于精密仪器、3D打印等场景。

weixin_29166013的博客 541

理解 this.initialize.apply ( this, arguments )

一、代码片段: 1、Class定义如下 var Class = { create: function() { return function() { this.initialize.apply(this, arguments); } } } 2、Class使用方式: var SimpleDrag = Class.create(); SimpleDrag.

录事参军 5484

2.3 MMU Notifier(上):KVM 催生的页表变化通知

探讨了MMU Notifier机制的作用及其在虚拟化等场景中的应用。当CPU页表发生变更(如munmap、页面迁移等操作)时,需要通知拥有"第二套页表"的子系统(如KVM的EPT/NPT、IOMMU、GPU等)失效其映射。MMU Notifier通过订阅-通知机制实现这一功能,核心数据结构包括mmu_notifier订阅对象和回调接口mmu_notifier_ops。当CPU页表修改时,通过mmu_notifier_range描述变更范围,调用订阅者的回调函数进行同步,确保外部MMU与CPU页表一致性。

图形/计算GPU的驱动与虚拟化技术分享园地 1031

js中call函数

var privilege = { /** * 所有的初始化的操作 */ init:{ /** * 所有的初始化的事件 */ initEvent:function(){ /** * 设置权限的click事件 */ $("a").each(function(){ if($(this).text()=="设置权限"){ $(

liuqiang211的专栏 865

RAP 语义键:让 UUID 世界变得可读、可导航、可校验

RAP 语义键的核心价值与实现要点 语义键(Semantic Key)是 ABAP RAP 模型中连接技术实现与业务体验的关键设计:通过为实体指定一组业务可读的标识字段(如订单号、物料编码等),在保持技术主键(如UUID)不变的同时,显著提升用户界面的可读性和导航体验。 主要优势: 提升UI可读性:Fiori元素会突出显示语义键字段,帮助用户快速识别关键业务数据 改善导航体验:OData URL会使用可读的语义键而非技术ID,便于分享和排查问题 降低沟通成本:业务人员能准确引用有意义的业务标识而非技术ID

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 153

车载ECU底软测试:方法与技术的深度解析

底软是运行在 ECU 硬件平台上的基础软件,它为上层应用程序提供了硬件驱动、操作系统服务、通信协议栈等功能。底软的主要功能包括:硬件驱动:负责与 ECU 的各种硬件外设进行通信和控制,如 GPIO、UART、SPI、CAN 等。操作系统服务:提供任务调度、内存管理、中断处理等功能,确保系统的实时性和稳定性。通信协议栈:实现 ECU 与其他 ECU 或外部设备之间的通信,如 CAN、LIN、FlexRay 等。诊断服务:负责对 ECU 的故障进行诊断和处理,并将故障信息存储在故障码存储器中。

天赐好车的博客 1425

JavaScript中的 Call 和 Apply

1. call 和 apply的区别 Function.prototype.call 和 Function.prototype.apply都是非常常用的方法,它们的作用一模一样,区别仅在于传入参数形式的不同。 apply接受两个参数,第一个参数指定了函数体内 this 对象的指向,第二个参数为一个带下标的集合,这个集合可以为数组,也可能为类数组,apply 方法把这个集合中的元素作为参数传递给.........

分享前端工程化、AI 应用、Agent 开发与大模型实践! 7334

orangepi香橙派用户名及密码修改和VNC远程登陆

1、修改 /etc/passwd用户信息文件 vim /etc/passwd #admin❌503:501::/home/admin:/bin/bash #把用户名admin改成rest #test❌503:501::/home/test:/bin/bash 2、修改 /etc/shadow用户密码文件 vim /etc/shadow #admin:Dnakfw28zf38w:8764:0:168:7::: #由于密码加密方式存放,只修改用户名即可(密码不变) #test:Dnakfw28zf38w:876

weixin_40227845的博客 5660

JavaScript中apply()和call()的区别和应用

JavaScript中的每一个Function对象都有一个apply()方法和一个call()方法,这两个方法能够改变函数体内部 this 的指向。 例如,fun1.call()或者fun1.apply() 都是为了改变fun1函数内部的this指向。 二者的作用完全一样,只是接受参数的方式不太一样。 func.apply(thisArg, [argsArray]) func.call...

qq_32614411的博客 1669

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

js中的call和apply

call和apply是替换前面函数内部的this指针以及传递参数。 区别是 call传递的参数是序列1,2,3,4 apply传递的参数是集合型[1,2,3,4]

赵佳敏的博客 8163

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Javascript中的apply、call、bind

以前用过一段时间 node.js,经常看到有 apply,call这类的函数。干啥用的?很高大上的样子。一、call 和 apply 在 javascript 中,call 和 apply 都是为了改变某个函数运行时的上下文(context)而存在的,换句话说,就是为了改变函数体内部 this 的指向。所谓的this,javascript中,this都存在于函数内部。因此,在javascript里面

左直拳的马桶_日用桶 7008

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Js apply方法详解,及其apply()方法的妙用

Js apply方法详解 主要解决一下几个问题: apply和call的区别在哪里 什么情况下用apply,什么情况下用call apply的其他巧妙用法(一般在什么情况下可以使用apply) 首先从网上查到关于apply和call的定义,然后用示例来解释这两个方法的意思和如何去用. apply:方法能劫持另外一个对象的方法,继承另外一个对象的属性. Function.apply(obj,ar...

p_hao的博客 892

JavaScript 中 call 和 apply 的用法与区别

📖在JavaScript中,call和apply是两个非常重要的函数方法,它们都用于改变函数执行时的this指向。虽然它们的功能相似,但在使用方式上有一些区别。

李赛赛的专栏 993

JavaScript中apply,call和bind方法

JavaScript call, apply , bind方法 JS call 方法,JS apply 方法,JS bind方法 call,apply 和 bind方法的区别 call, apply 和 bind的使用 手写 bind方法

CSPsy的博客 1894

js call和apply方法

call、apply用法,区别,以及模拟实现

zxl1990_ok的博客 575

Js apply方法和call方法的详解

一开始看到javascript的函数apply和call方法的时候,非常的模糊,看也看不懂,最近在网上看到一些文章对apply方法和call的一些示例,总算是看的有点眉目了,在这里我做如下笔记,希望和大家分享… 如有什么不对的或者说法不明确的地方希望读者多多提一些意见,以便和大家共同提高… 主要我是要解决一下几个问题: 1,apply和call的区别在哪里 2, 什么情况下用apply,什么情况下用call 3,apply的其他巧妙用法(一般在什么情况下可以使用apply) 一、定义: apply:方法能

qq_44552416的博客 1394

JavaScript中call,apply,bind方法的总结

function MAN(name, sex, age) { this.name = name; this.sex = sex; this.age = age; this.say = function(school,zhuanye) { console.log(this.name + " , " + this.sex + " ,今年" + this.age

黄沙百战穿金甲,不破楼兰终不还。 1478
上一篇: 【小记】assign 和 replace 方法
下一篇: ES6 Truncate String -- 可以用于文章摘要限制显示字数
! 不再维护
博客等级 码龄11年 63粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值