码迷,mamicode.com
首页 > 移动开发 > 详细

js中bind,call,apply方法的应用

时间:2015-07-30 21:00:17      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:

最近用js的类写东西,发现一个无比蛋疼的事,那就是封装的类方法中的this指针经常会改变指向,失去上下文,导致程序错误或崩溃。

比如:

function Obj(){
  this.type = "obj";
}
Obj.prototype = {
  show : function (){
  etTimeout(function (){
    console.log(this.type);
  },300)
}

var obj = new Obj();
obj.show();  //undefined

所幸伟大的js有多种方法可以解决这个问题。我们可以直接保存上下文的指针指向 比如  var self = this; 然后用缓存的 self指针,但是js里面有 bind,apply,call等比较好用的方法,来指定上下文。

语法:fn.bind(obj,arguments)

   fn.apply(obj,arguments)

   fn.call(obj,arguments)

区别:

  1.bind返回一个方法,而其余两个都直接调用了函数;

  2.第一个参数都一样,指定上下文对象,第二个参数apply是数组,而call则对应形

参照:http://www.css119.com/archives/1376

js中bind,call,apply方法的应用

标签:

原文地址:http://www.cnblogs.com/donglegend/p/4690243.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!