首页 > 移动平台 > 详细

JavaScript中call、apply、bind、slice的使用

时间:2015-09-26 11:44:36      阅读:226      评论:0      收藏:0      [点我收藏+]

1、参考资料

http://www.cnblogs.com/coco1s/p/4833199.html
 

2、归结如下

  • apply 、 call 、bind 三者都是用来改变函数的this对象的指向的;
  • apply 、 call 、bind 三者第一个参数都是this要指向的对象,也就是想指定的上下文;
  • apply 、 call 、bind 三者都可以利用后续参数传参;
  • bind 是返回对应函数,便于稍后调用;apply 、call 则是立即调用
  • slice用于将含有length属性的对象(伪数组对象,如arguments、document.getElementByTagName的结果、{length:3}等)转化为真正的数组对象

3、示例如下

call、apply、bind示例:

var obj = {
    x: 81,
};
var foo = {
    getX: function() {
        return this.x;
    }
}
console.log(foo.getX.bind(obj)());  //81
console.log(foo.getX.call(obj));    //81
console.log(foo.getX.apply(obj));   //81
//当你希望改变上下文环境之后并非立即执行,而是回调执行的时候,使用 bind() 方法。而 apply/call 则会立即执行函数

bind示例:

var foo = {
    bar : 1,
    eventBind: function(){
        $(‘body‘).on(‘click‘,function(event) {
            /* Act on the event */
            console.log(this.bar);      //1
        }.bind(this));
    }
}

slice示例:

Array.prototype.slice.call({length:3,0:"first",1:"second"})//["first", "second", undefined ]

 

JavaScript中call、apply、bind、slice的使用

原文:http://www.cnblogs.com/z-sm/p/4840423.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!