zoukankan      html  css  js  c++  java
  • underscore的bind和bindAll方法

    bind方法和bindAll方法都是用来设定函数的this值的,区别是调用方式不同。

    var xiaoming = {
        say:function(){
            console.log('I am xiaoming');
        }
    }
    
    //bind
    var func = bind(xiaoming, xiaoming.say);
    func(); // I am xiaoming
    
    //bindAll
    bindAll(xiaoming, 'say');
    var func = xiaoming.say;
    func(); // I am xiaoming

    bind和bindAll都是改变函数的this指向,然后返回一个新的函数,永久的指向这个this指向

    举例

    function Person(name,age){
        this.name = name;
        this.age = age;
    
        bindAll(this, 'sayName', 'sayAge');
    }
    
    Person.prototype.sayName = function(){
        console.log(this.name);
    }
    
    Person.prototype.sayAge = function(){
        console.log(this.age);
    }
    
    var person = new Person('xiaoming',26);
    var func = person.sayName;
    func();
    
    $('button').click(person.sayAge);

    无论如何调用,sayName和sayPerson的this都指向person对象。

  • 相关阅读:
    国际标准化组织
    SIM卡
    苹果供应商
    iOS 调试技巧
    django进阶
    web框架django初探
    jquery
    JavaScript进阶之DOM
    html和css
    前端相关html和css
  • 原文地址:https://www.cnblogs.com/mengff/p/9028975.html
Copyright © 2011-2022 走看看