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/caller/callee/bind使用方法与区别分析

转自:http://www.codesky.net/article/201004/100030.html 一、call 方法 调用一个对象的一个方法,以另一个对象替换当前对象(其实就是更改对...

apply, call, bind在js中的区别

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

JS中call、apply、bind大概区别

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

戏说js的call, apply 和 bind (文章内容可能引起逻辑严谨的程序员的不适,慎入!)

有两个对象,他们的名字叫obj1, 和obj2, 他们很像,但是其实是生活在不同的平行空间中行走,但是彼此不能相见。下面请看看他们长什么样子。var obj1 = { power: 8, ...

js中bind、call、apply函数的用法

最近一直在用 js 写游戏服务器,我也接触 js 时间不长,大学的时候用 js 做过一个 H3C 的 web的项目,然后在腾讯实习的时候用 js 写过一些奇怪的程序,自己也用 js 写过几个的网站...

使用call、apply和bind解决js中烦人的this,事件绑定时的this和传参问题

Teddy's  http://www.cnblogs.com/tingyu-blog/p/6212392.html 1、什么是this 在JavaScript中this可...

js 探讨call,apply,bind的使用

js中的call(),apply(),bind()方法的使用情况

理解JS中的call、apply、bind方法

在JavaScript中,call、apply和bind是Function对象自带的三个方法,这三个方法的主要作用是改变函数中的this指向。 call、apply、bind方法的共同点和区别:...

js中call、apply、bind的用法

今天看博客时,看到了这样的一段js代码: var bind = Function.prototype.call.bind(Function.prototype.bind); 我想突然看到这...
  • wxw_317
  • wxw_317
  • 2015年11月18日 17:23
  • 462

解析js中的call、apply、bind

解析js中的call、apply、bind解析js中的callapplybind call和apply 改变上下文 调用原生对象的方法 实现继承 bindcall和apply1. 改变上下文obj.c...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:js中bind、call、apply区别和简单应用
举报原因:
原因补充:

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