• 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对象。

  • 相关阅读:
    mongodb分片
    mongodb副本集搭建
    mongodb数据导入导出
    mongodb安装、配置
    redis副本集
    redis安装,第一天
    redis常用命令
    mac中安装 RabbitMQ
    Vue常用模块
    nodejs,koa2常用模块
  • 原文地址:https://www.cnblogs.com/mengff/p/9028975.html
Copyright © 2020-2023  润新知