发表于: 2017-03-04 01:20:25
1 1135
web小课堂--JS中this的指向
1.背景介绍
this是什么:JavaScript的关键词之一,表示一个对象。 具体表示哪个对象,则取决于引用环境。
规则:“函数在被调用时,其活动对象都会自动取得两个特殊变量 this 和 arguments。 内部函数在搜索这两个变量时,只会搜索到其活动对象为止。”《javascript高级程序设计》7.2
例子--不同环境下的this
var gaObj={
name:"名字",
what:function(return(this))};
gaObj.what(); //返回gaObj
function gfa(){return(this);};
gfa(); //返回window
知识剖析
1.几种不同的引用环境
2.几种不同的引用方式
全局函数、全局对象内的引用
局部变量,局部函数内的引用
包含this对象的代码,不同的引用方式
可能会改变this被引用的环境
常见问题
.call, .apply, .bind中this的指向
解决方案
指定了函数的上下文,改变了this的指向
var obj = {
name: "name1",
foo: function () {console.log(this);return(this);}
};
var obj2 = {
name: "name2"
};
obj.foo.call(obj2);//obj.foo方法,作为参数传递给obj2,obj中的this指向了obj2
ga=obj.foo.call(obj2).name;//name2
obj.foo方法,作为参数传递给obj2,obj中的this指向了obj2
构造函数
function fn(a) {this.name = a;}
var bar = new fn( 2 );
console.log( bar.name );// 2
扩展思考
this有哪些优缺点
如何利用this的特性达到代码的复用
参考文献
https://qiutc.me/post/this-this-this-in-javascript.html
http://www.ruanyifeng.com/blog/2013/09/finite-state_machine_for_javascript.html
《javascript高级程序设计》
https://github.com/ptteng/PPT/tree/master/demo/js-02-js-02-targetOfKeywordThis
<!--------------------------------------------------------------->
今日完成:
1小课堂:this的指向问题
2 闭包:
3 js知识结构
明日计划:
1 js知识结构,再做一些
2 json和本地存储的内容,尤其是其方法。
3 任务4争取做一下
收获:对this和闭包多少有些了解了。对原生js的了解又多了一些。
(第二天添加链接)
评论