ECMASCript5新特性之Function.prototype.bind

来源:互联网 发布:muse是什么软件 编辑:程序博客网 时间:2024/05/28 17:07

用途:如何在另一个函数中保持this上下文
实例一:

var obj = {   fun1: function(cb) {        cb();   },   fun2: function() {     alert(1);   },   render: function() {    var self = this;        this.fun1(function() {            self.fun2();        });   }};

用bind方法改进:

var obj = {   fun1: function(cb) {        cb();   },   fun2: function() {     alert(1);   },   render: function() {        this.fun1(function() {            this.fun2();        }.bind(this)); // 即当前函数的内部的执行对象是this   }};

当然,call方法和apply也能实现类似于bind方法的功能,即改变当前函数的执行对象,例如:

var x = 5;var foo = {    x: 3};var bar = function() {    console.log(this.x);}bar(); // 5var boundFunc = bar.bind(foo);boundFunc(); // 3bar.call(foo); // 3bar.apply(foo); // 3
0 0
原创粉丝点击