博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript中bind,apply,call的相同和不同之处
阅读量:5221 次
发布时间:2019-06-14

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

javasctipt中bind,apply,call的相同点是:

  1,都是用来改变this的指向;

  2,都可以通过后续参数进行传参;

  3,第一个参数都是指定this要指向的对象;

  

  不同点:

  1,调用方式不同,apply和call的调用方式一致,但是bind方式就不一样了;

var xz = {            name:'小张',            age:20,            show: function () {                console.log("name: %s; age: %d;",this.name,this.age);            }        }var xh = {            name:'小红',            age:22        };        xz.show();        xz.show.apply(xh);        xz.show.call(xh);      xz.show.bind(xh)();    //bind方法返回的任然是一个方法,所以还需要加()进行调用;

  2,传参方式不同

var xz = {            name:'小张',            age:20,            show: function (school,grade) {                console.log("name: %s; age: %d; school:%s; grade:%s",this.name,this.age,school,grade);            }        }var xh = {            name:'小红',            age:22        };        xz.show('四川大学','12级4班');        xz.show.apply(xh,['电子科技大学','10级5班']);        xz.show.call(xh,"电子科技大学成都学院",'12级4班');        xz.show.bind(xh,"电子科技大学成都学院",'12级4班')();        xz.show.bind(xh)("电子科技大学成都学院",'12级4班');

  apply的传参方式是数组形式;call和bind的传参方式相同,使用一一对应的方式传入,而bind还有另外一种传参方式就是在后面的回调里面穿入参数

转载于:https://www.cnblogs.com/momodaolai/p/5956477.html

你可能感兴趣的文章
MVC test
查看>>
开发规范
查看>>
bzoj3992 [SDOI2015]序列统计
查看>>
理解screenX clientX pageX概念
查看>>
01 day
查看>>
enableEventValidation
查看>>
函数基础三 -- 装饰器
查看>>
Linux基本操作命令
查看>>
Python基础 之for循环嵌套实例
查看>>
SpringBoot2.x 定时任务
查看>>
Linux笔记(六) - 压缩解压命令
查看>>
Red Hat Enterprise Linux Server 6.5安装gcc 4.9.2
查看>>
[The Diary] 11.2 Thursday
查看>>
Json
查看>>
c++ 学籍管理系统v 1.0
查看>>
如何在CentOS中开启Swap
查看>>
专题四--1001
查看>>
xml配置文件命名空间学习
查看>>
云计算的里程碑!阿里云大会拨开云雾揭露云计算全貌
查看>>
[上海博物馆全集列表]
查看>>