博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【js】call,apply的区别
阅读量:6272 次
发布时间:2019-06-22

本文共 1080 字,大约阅读时间需要 3 分钟。

hot3.png

obj.call(thisObj, arg1, arg2, ...); obj.apply(thisObj, [arg1, arg2, ...]); 两者作用一致,都是把obj(即this)绑定到thisObj,这时候thisObj具备了obj的属性和方法。或者说thisObj『继承』了obj的属性和方法。

唯一区别是apply接受的是数组参数,call接受的是连续参数。

//动物对象var Animal=function(name){    this.name=name;    this.showName=function(){        alert(this.name);    }}//猫对象var Cat=function(){    this.name="猫";    Animal.call(this,this.name); //call 必须是 继承对象,非数组}//狗对象var Dog=function(){    Animal.apply(this,["狗"]);  //apply 必须是 继承对象,数组}//猪对象var Pig=function(){    this.name="猪";}

测试

$(function(){    var animal=new Animal("动物");    animal.showName();    var cat =new Cat();    cat.showName();    var dog=new Dog();    dog.showName();    var pig=new Pig();    animal.showName.call(pig);  //pig 从Animal 对象中继承showName 方法    animal.showName.apply(pig); });

举例2: 三种调用方法是一样的

var person= {    print: function(name ,age){             console.log(this.name);             console.log(age);    } } person.print.call(person,'zhangsan',25); person.print.apply(person,['zhangsan',25]); person.print('zhangsan',25);

转载于:https://my.oschina.net/v512345/blog/846651

你可能感兴趣的文章
CentOS安装Node.js
查看>>
Java使用sftp定时下载文件
查看>>
shell中cut命令的使用方法
查看>>
Java 自动装箱与拆箱
查看>>
《艳遇SOLR》9--solr查询--逻辑运算查询
查看>>
MariaDB/Mysql 批量插入 批量更新
查看>>
前端开发工程师必备技能
查看>>
@RequestMapping注解中的url
查看>>
Spring
查看>>
Java基本数据类型学习笔记
查看>>
Django的全文检索
查看>>
ItelliJ IDEA开发工具使用—创建一个web项目
查看>>
搞V6记录
查看>>
OC与js交互获取webview元素和赋值
查看>>
分布式锁的实现
查看>>
ctags --- 每天一个 Linux 命令
查看>>
页面加载新的东西到页面底部
查看>>
java执行命令行,路径有空格的解决办法
查看>>
test
查看>>
學習 React.js:用 Node 和 React.js 創建一個實時的 Twitter 流
查看>>