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

[复制链接] [提交至百度]
查看: 634|回复: 4

857

主题

1451

帖子

6904

积分

管理员

人亦已歌

Rank: 12Rank: 12Rank: 12

积分
6904

活跃会员热心会员推广达人宣传达人突出贡献优秀版主荣誉管理论坛元老

发表于 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属性。


1

主题

103

帖子

53

积分

终身会员

Rank: 25Rank: 25Rank: 25Rank: 25Rank: 25Rank: 25Rank: 25

积分
53

终身会员

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

0

主题

3

帖子

2

积分

营销入门

Rank: 2

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

0

主题

6

帖子

3

积分

营销入门

Rank: 2

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

0

主题

9

帖子

5

积分

营销入门

Rank: 2

积分
5
发表于 4 天前 | 显示全部楼层
应该好好学习的啊
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

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

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

返回顶部 返回列表