码迷,mamicode.com
首页 > 编程语言 > 详细

javascript中this的绑定

时间:2017-01-18 10:41:12      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:call   使用   位置   修改   学习   undefined   决定   rip   asc   

JavaScript中this有很多种绑定方式,最近学习过程中总结了一下,有默认绑定、隐式绑定、显示绑定、强制绑定、实例绑定。

接下来我们看看:

默认绑定:

代码如下:

function foo() {

  console.log( this.a );

}

var a = 3;

foo(); // 3

全局作用域下this默认指定到window,默认绑定即调用位置如何决定 this 的绑定对象。

 

隐式绑定:

function foo() {

  console.log( this.a );

}

var obj = { a: 3, foo: foo };

obj.foo(); // 3

隐式绑定容易丢失 比如

var bar=obj.foo;

bar();//undefined

调用位置是在window下 但是foo方法指定了obj作为它的绑定对象

显示绑定:

function foo() {

  console.log( this.a );

}

var obj = { a:3 };

foo.call( obj ); // 3

使用call我们调用foo的时候强制把this绑定在obj上

强制绑定:

function foo() {

  console.log( this.a );

}

var obj = { a:3};

var bar = function() {

  foo.call( obj );//强制绑定

};

bar(); // 3

setTimeout( bar, 100 ); // 3

// 强制绑定的 bar 不可能再修改它的 this

bar.call( window ); // 还是3

实例绑定:

JavaScript 也有一个 new 操作符

function foo(a) {

  this.a = a;

}

var bar = new foo(3);

console.log( bar.a ); // 3

 

javascript中this的绑定

标签:call   使用   位置   修改   学习   undefined   决定   rip   asc   

原文地址:http://www.cnblogs.com/TonyLearning/p/6295605.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!