js中的bind

最近在看一些大牛的Blog的时候自己总结了一下判断this的方法,举几个例子:

例一:

var a = {
	b : function(){
		var func = function(){
			console.log(this.c);
		}
		func();
	},
	c : 'Hello!'
}
a.b();
//打印undefined

首先要看方法的调用者,这里面是a,所以看a所在的环境,a是一个全局变量,a的同级下是没有变量c的,所以结果是undefined 

如果改成:

var a = {
            b: function () {
                var that = this;
                var func = function () {
                    console.log(this.c);
                }
                func();
            },
            c: 'Hello!'
        }
        var c="hahah";
        a.b();

就会打印hahah

继续改:

 var a = {
            b: function () {
                var that = this;
                var func = function () {
                    console.log(that.c);
                }
                func();
            },
            c: 'Hello!'
        }
        var c="hahah";
        a.b();

结果是Hello

因为这里储存了this在that里面,所以这里的that表示的是b所在的环境(也就是变量a),在a里面是有变量c存在的

有了这样的简单铺垫,我们可以看一下我转载过来的一个博客,介绍的bind

猜你喜欢

转载自blog.csdn.net/scwMason/article/details/82959011
今日推荐