javascript核心技术(四十六) this指向的总结

[复制链接]
查看: 1753|回复: 31
发表于 2023-1-28 20:37:10 | 显示全部楼层 | 阅读模式
this共有以下5中使用场景
  1. 1.普通函数中,this始终指向window对象。
  2. 2.事件函数中,this始终指向触发事件的标签。
  3. 3.构造函数中,this始终指向实例化后的那个对象。
  4. 4.对象方法中,this指向调用方法的那个对象,如果是链式调用,则指向方法前的那个对象。
  5. 5.html标签中,this指向标签本身。
复制代码

以上五句话请务必谨记,因为关于this的指向问题常常会搞不清楚。

一、普通函数中,this始终指向window对象。
<!DOCTYPE html>
<html>
<head>
        <title>普通函数中,this始终指向window对象</title>
</head>
<body>
        <script type="text/javascript">
                function f7(){
                        console.log(this);
                        function f8(){
                                console.log(this);
                        }
                        f8();
                }
                f7();
        </script>
</body>
</html>

javascript核心技术(四十六) this指向的总结

二、事件函数中,this始终指向触发事件的标签。
<!DOCTYPE html>
<html>
<head>
        <title>事件函数中,this始终指向触发事件的标签</title>
</head>
<body>
        <input type="button" id="btn" value="按钮">
        <script type="text/javascript">
                document.getElementById('btn').onclick = function(){
                        console.log(this);
                }
                function f2(){
                        console.log(this);
                }
                document.getElementById('btn').onclick = f2;
        </script>
</body>
</html>

javascript核心技术(四十六) this指向的总结

三、构造函数中,this始终指向实例化后的那个对象。
<!DOCTYPE html>
<html>
<head>
        <title>构造函数中,this始终指向实例化后的那个对象。</title>
</head>
<body>
        <script type="text/javascript">
                function Person(){
                        this.age = 30;
                        console.log(this);//this指向obj
                }
                var obj = new Person();
        </script>
</body>
</html>

javascript核心技术(四十六) this指向的总结

四、对象方法中,this指向调用方法的那个对象,如果是链式调用,则指向方法前的那个对象。
<!DOCTYPE html>
<html>
<head>
        <title>对象方法中,this指向调用方法的那个对象,如果是链式调用,则指向方法前的那个对象。</title>
        <script src="./jquery.js"></script>
</head>
<body>
        <script type="text/javascript">
        var obj = {
                "age":30,
                "say":function(){
                        console.log(this);
                }
        };
        obj.say(); // obj调用,this指向obj

        var obj2 = {
                "age":40,
                "say":obj.say
        };
        obj2.say();  //obj2调用,this指向obj2

        //链式调用时看方法调用的前面的那个值
        var obj = {
                "age":40,
                "son":{"age":20,"say":function(){console.log(this);}}//this指向son
        };
        obj.son.say();
        </script>
</body>
</html>


javascript核心技术(四十六) this指向的总结

五、html标签中,this指向标签本身。
<!DOCTYPE html>
<html>
<head>
        <title>html标签中,this指向标签本身</title>
        <script src="./jquery.js"></script>
</head>
<body>
        <img src="./img/a.jpg">
        <img src="./img/a.jpg">
        <script type="text/javascript">
                function f(obj){
                        console.log(obj);
                }
        </script>

</body>
</html>

javascript核心技术(四十六) this指向的总结
解释:
点击图片1时输出this为标签自身,点击图片2时替换了当前标签的src属性。


易博软件介绍
发表于 2023-2-21 17:56:08 | 显示全部楼层
真是:  贴  好贴  好的贴  一篇好贴  一篇极品贴  一篇挺好的贴  一篇非常好的贴  一篇让人叫好的贴  一篇非常不错的好贴  一篇地球中最好的好贴  一篇地球中绝世无双的贴

0

主题

15

帖子

8

积分

营销入门

Rank: 2

积分
8
发表于 2023-3-5 10:21:38 | 显示全部楼层
听君一席话,胜读十年书!!!

0

主题

9

帖子

5

积分

营销入门

Rank: 2

积分
5
发表于 2023-3-15 20:01:42 | 显示全部楼层
学无止尽,多谢楼主,让我们为中国的软件事业做点什么吧!

0

主题

20

帖子

11

积分

营销入门

Rank: 2

积分
11
发表于 2023-3-24 08:24:00 | 显示全部楼层
应该好好学习的啊
发表于 2023-3-31 01:38:45 | 显示全部楼层
深受感益,我生物学毕业,自学编程刚入门!

0

主题

15

帖子

8

积分

营销入门

Rank: 2

积分
8
发表于 2023-4-4 16:45:33 | 显示全部楼层
站在那里不重要,重要的是走向那里  

0

主题

29

帖子

16

积分

营销入门

Rank: 2

积分
16
发表于 2023-4-10 05:49:54 | 显示全部楼层
哈哈  科学 !!!!!!!!  恩 对我这样的初学者 基础基础再基础  
发表于 2023-4-14 22:48:42 | 显示全部楼层
^  谢了。。
发表于 2023-4-19 18:54:00 | 显示全部楼层
楼主的想法确实值得我们学习!!!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1、请认真发帖,禁止回复纯表情,纯数字等无意义的内容!帖子内容不要太简单!
2、提倡文明上网,净化网络环境!抵制低俗不良违法有害信息。
3、如果你对主帖作者的帖子不屑一顾的话,请勿回帖。谢谢合作!
3、问答求助区发帖求助后,如有其他用户热心帮您解决问题后,请自觉点击设为最佳答案按钮。

 
 
QQ在线客服
QQ技术支持
工作时间:
8:00-18:00
软著登字:
1361266号
官方微信扫一扫
weixin

QQ|小黑屋|Archiver|慈众营销 ( 粤ICP备15049986号 )|网站地图

自动发帖软件 | 自动发帖器 | 营销推广软件 | 网络营销工具 | 网络营销软件 | 网站推广工具 | 网络推广软件 | 网络推广工具 | 网页推广软件 | 信息发布软件 | 网站推广工具 | 网页推广软件

Powered by Discuz! X3.4   © 2012-2020 Comsenz Inc.  慈众科技 - Collect from 深圳吉宝泰佛文化有限公司 公司地址:罗湖区黄贝街道深南东路集浩大厦A1403

返回顶部 返回列表