首页 >

在JavaScript中call()与apply()区别【javascript】

web前端|js教程在JavaScript中call()与apply()区别【javascript】
js_call_apply区别,apply与call的区别,call和apply区别
web前端-js教程
如果没接触过动态语言,以编译型语言的思维方式去理解javaScript将会有种神奇而怪异的感觉,因为意识上往往不可能的事偏偏就发生了,甚至觉得不可理喻.如果在学JavaScript这自由而变幻无穷的语言过程中遇到这种感觉,那么就从现在形始,请放下的您的”偏见”,因为这对您来说绝对是一片新大陆,让JavaScrip
门票预定源码,ubuntu还原初系统,孙卫琴写的tomcat,舆情监控爬虫开发,加密的php文件怎么运行的,唯平台seolzw
好,言归正传,先理解JavaScrtipt动态变换运行时上下文特性,这种特性主要就体现在apply, call两个方法的运用上.
android拍照源码,ubuntu阿里下载,hls推流到tomcat上,爬虫分析post,php学习心得与体会,seo技术新手入门教程分类lzw
A、方法的定义
易安卓锁机源码,vscode编译运行,ubuntu linux,tomcat集群配置,limit sqlite,一带一路网页设计模板,dedecms怎么打开数据库,香港云服务器 不限内容,discuz论坛插件文件夹,多页前端框架,爬虫使用,编译php,seo教程视频,springboot路径写法,灵动标签 图片,电影网站 cpa,php 网页 下载,黑色 phpwind模板,data 修改后进不了后台,网站不存在页面源码,web进销存管理系统wbjxc v3.0,vb程序播放声音lzw
call方法:

语法:call(thisObj,Object)

定义:调用一个对象的一个方法,以另一个对象替换当前对象。

说明:

call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。
如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。

apply方法:

语法:apply(thisObj,[argArray])

定义:应用某一对象的一个方法,用另一个对象替换当前对象。

说明:

如果 argArray 不是一个有效的数组或者不是 arguments 对象,那么将导致一个 TypeError。

如果没有提供 argArray 和 thisObj 任何一个参数,那么 Global 对象将被用作 thisObj, 并且无法被传递任何参数。

——————————————————————————–

注意:call和apply方法完全一致,只是apply在传参的方式上,它以数组方式来传参。

代码示例:

function Animal(name) {this.name = name;this.showName = function() {console.log(this.name);};}function Cat(name) {Animal.call(this, name);}Cat.prototype = new Animal();function Dog(name) {Animal.apply(this, name);}Dog.prototype = new Animal();var cat = new Cat("Black Cat"); //call必须是objectvar dog = new Dog(["Black Dog"]); //apply必须是arraycat.showName();dog.showName();console.log(cat instanceof Animal);console.log(dog instanceof Animal); 
——————————————————————————-

模拟call, apply的this替换

function Animal(name) {this.name = name;this.showName = function() {alert(this.name);};};function Cat(name) {this.superClass = Animal;this.superClass(name);delete superClass;}var cat = new Cat("Black Cat");cat.showName();
总结:

它们各自的定义:

apply:应用某一对象的一个方法,用另一个对象替换当前对象。

call:调用一个对象的一个方法,以另一个对象替换当前对象。

它们的共同之处:

都“可以用来代替另一个对象调用一个方法,将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。”——摘自JScript5.5 .chm

它们的不同之处:

apply:最多只能有两个参数——新this对象和一个数组 argArray。如果给该方法传递多个参数,则把参数都写进这个数组里面,当然,即使只有一个参数,也要写进数组里面。如果 argArray 不是一个有效的数组或者不是 arguments 对象,那么将导致一个 TypeError。如果没有提供 argArray 和 thisObj 任何一个参数,那么 Global 对象将被用作 thisObj, 并且无法被传递任何参数。

call:则是直接的参数列表,主要用在js对象各方法互相调用的时候,使当前this实例指针保持一致,或在特殊情况下需要改变this指针。如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。

更简单地说,apply和call功能一样,只是传入的参数列表形式不同:如 func.call(func1,var1,var2,var3)对应的apply写法为:func.apply(func1,[var1,var2,var3])


  • 暂无相关文章