js中bind、call、apply区别和简单应用

原创 2017年01月03日 12:45:05

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:undefined
document.getElementById("simpleForm1").onclick = function(){//2-name:yangzai,age:10
	simpleForm1.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其实也是函数调用的一种方式,下面我们指定了作用域为simpleForm2
var 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:20
document.getElementById("simpleForm1").onclick = simpleForm1.submit.apply(simpleForm2);//name:datou,age:20


版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

js中apply、call和bind的区别

今天看到一篇介绍apply、call、bind的博文,感觉介绍的简单明了,就转一下,顺便收藏起来。在JS中,这三者都是用来改变函数的this对象的指向的,他们有什么样的区别呢。 在说区别之前还是先总...

apply call bind区别

原文地址:http://www.admin10000.com/document/6711.html apply、call  在 javascript 中,call 和 apply 都是为了改变...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

JS中call、apply、bind大概区别

为什么需要这些?主要是因为this,来看看this干的好事。box.onclick = function(){   function fn(){     alert(this);   }   fn()...

apply, call, bind在js中的区别

apply, call, bind在js中的区别在js中,这三种方法都是用来改变函数的this对象的指向的。先看看相似点: 都是用来改变函数的this对象的指向的 第一个参数都是this要指向的对...

apply、call、bind区别、用法

apply和call都是为了改变某个函数运行时的上下文而存在的(就是为了改变函数内部this的指向); 如果使用apply或call方法,那么this指向他们的第一个参数,apply的第二个...

javascript中apply、call和bind的区别

在JS中,这三者都是用来改变函数的this对象的指向的,他们有什么样的区别呢。 在说区别之前还是先总结一下三者的相似之处: 1、都是用来改变函数的this对象的指向的。 2、第一个参数都是thi...

javascript中apply、call和bind的区别

本文转载于:http://www.cnblogs.com/cosiray/p/4512969.html 在JS中,这三者都是用来改变函数的this对象的指向的,他们有什么样的区别呢。 在说...

js中call,apply和bind方法的区别和使用场景

详解js中的call,apply和bind函数

js call和apply的区别

apply()与call()的区别   一直都没太明白apply()与call()的具体使用原理,今日闲来无事,决定好好研究一番。   JavaScript中的每一个Function对象都...

深入浅出 妙用Javascript中apply、call、bind

原文地址:【优雅代码】深入浅出 妙用Javascript中apply、call、bind 这篇文章实在是很难下笔,因为网上相关文章不胜枚举。巧合的是前些天看到阮老师的一篇文章的一句话:“对我来说,博客...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)