发表于: 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的了解又多了一些。

(第二天添加链接)


返回列表 返回列表
评论

    分享到