js中bind、call、apply区别和简单应用
来源:互联网 发布:面试问题 知乎 编辑:程序博客网 时间:2024/05/29 18:55
1,js函数应用的时候都包含着隐式传递this的效果--而bind、call、apply是显式传递boj的效果;
2,显式是为了和别的obj(上下文)发生关系,bind是指定关系,然后再某个时刻运用这种关系,call、apply是指定这种关系并且立即运用;
以下是例子:
var simpleForm1 = {name:"yangzai",age:10,submit:function(){alert("name:"+this.name+",age:"+this.age);}};document.getElementById("simpleForm1").onclick = simpleForm1.submit;//1-name:,age:undefineddocument.getElementById("simpleForm1").onclick = function(){//2-name:yangzai,age:10simpleForm1.submit();};document.getElementById("simpleForm1").onclick = simpleForm1.submit.bind(simpleForm1);//3-name:yangzai,age:10第一种:submit的引用指向已经便更,所以this.name不会再调用simpleForm1里面的属性;
第二种:建立匿名函数是一种方法,也很常用;
第三种:用bind改变引用关系,使this作用域回到simpleForm1对象中;
下面是call、apply的调用例子:
//call、apply调用时,可以显式改变js作用域--call、apply其实也是函数调用的一种方式,下面我们指定了作用域为simpleForm2var simpleForm1 = {name:"yangzai",age:10,submit:function(){alert("name:"+this.name+",age:"+this.age);}};var simpleForm2 = {name:"datou",age:20};document.getElementById("simpleForm1").onclick = simpleForm1.submit.call(simpleForm2);//name:datou,age:20document.getElementById("simpleForm1").onclick = simpleForm1.submit.apply(simpleForm2);//name:datou,age:20
0 0
- js中bind、call、apply区别和简单应用
- js中apply、call和bind的区别
- js中bind、call和apply的区别
- JS中apply call bind的区别
- JS中call、apply、bind大概区别
- JS中call、apply、bind的区别
- js中call、apply和bind
- js中call和apply的应用和区别
- 关于js中call(), apply(), bind()简单的解释
- 关于js中call、apply、bind方法的区别
- 浅谈js中 call, apply, bind 的区别
- js中call()、apply()、bind()方法的区别
- js中call,apply和bind方法的区别和使用场景
- 对js中call、apply和bind的理解
- javascript中:call、apply和 bind的简单使用方法
- js中apply和call的应用
- javascript中apply、call和bind的区别
- JavaScript中apply、call和bind的区别
- 为什么国外程序员爱用Mac?
- JVM学习笔记(三)JAVA中四种引用浅析
- 一些类库
- 计算日期到天数转换【编程题】
- MySQL基本命令
- js中bind、call、apply区别和简单应用
- Spring 框架参考文档(六)-Integration之任务执行与调度
- Oracle数据库表的修改
- JS 转义与反转
- 数据库三范式的理解定义
- 片段
- kubernetes1.5新特性:自定义资源类型
- 【JS】JavaScript进行表单验证经常使用的判断条件
- java之线程第二部分