JavaScript基础知识-this

简介: 关于JavaScript中this关键字的基础知识,通过比较其他编程语言如Python中的self参数来帮助读者理解。

作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。

  后记:

    其实有过其他编程经验(比如C++,Java,Python等)的小伙伴可能很容易理解这个this。

    以Python为例,还记得为类定义各种普通方法(及未使用装饰器装饰的方法)吗,它们都会涉及一个动态绑定的第一参数self。其实JavaScript的原理和其类似。

一.JavaScript源代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>this</title>
    <script type="text/javascript">

        var name = "JavaScript";

        /**
         *  解析器在调用函数每次都会向函数内部传递进一个隐含的参数,这个隐含的参数就是this,this指向的是一个对象。
         *
         *  this对象(浏览器在渲染代码时由浏览器隐式传参)我们称为函数执行的上下文对象,根据函数的调用方式的不同,this会指向不同的对象。
         *      (1)以函数的形式调用时,this永远都是window;
         *      (2)以方法的形式调用时,this永远都是object;
         *
         */
        function sayHello(name,age){
            console.log("this = %s",this)
            // 一旦有this的存在,我们可以根据不同调用者返回不同的name属性哟~
            console.log("this.name = %s",this.name)
            console.log("I'm %s, and I'm %d years old.",name,age);
        }

        /**
         *  创建一个对象,我们封装上面的函数
         */
        var obj1 = {
            name:"尹正杰",
            sayHi:sayHello
        }

        var obj2 = {
            name:"Jason Yin",
            sayHi:sayHello
        }


        // 如下所示。根据函数的调用方式不同,this会指向不同的对象。
        sayHello("Python",25);
        obj1.sayHi("CentOS",18);
        obj2.sayHi("Ubuntu",20);

    </script>
</head>
<body>

</body>
</html>

二.浏览器打开以上代码渲染结果

目录
相关文章
|
JSON API 开发者
淘宝详情API接口在各种应用中的作用性
随着互联网的快速发展和电子商务的广泛应用,淘宝作为中国最大的C2C电商平台,其提供的API接口在各种应用中发挥着越来越重要的作用。本文将详细介绍淘宝详情API接口的背景、定义、类型,以及在各种应用场景中的作用和优势,以期为相关领域的开发者提供有价值的参考。
|
数据可视化 数据挖掘 API
NumPy 在科学计算中的角色
【8月更文第30天】NumPy 是 Python 中用于科学计算的核心库之一,它为 Python 提供了高效的数组处理能力。由于其强大的性能和简洁的 API,NumPy 成为了物理学、工程学以及其他科学领域进行数值计算的标准工具。本文将探讨 NumPy 在这些领域的应用,并通过具体的代码示例来展示 NumPy 的强大功能。
287 1
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的车之国汽车销售网站附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的车之国汽车销售网站附带文章源码部署视频讲解等
161 1
|
Kubernetes Cloud Native Java
当 Quarkus 遇上 Spring Boot,谁才是现代云原生应用的终极之选?究竟哪款能助你的应用傲视群雄?
Quarkus 和 Spring Boot 均为构建现代云原生应用的热门框架,旨在简化开发流程并提升性能。Spring Boot 依托庞大的 Spring 生态系统,提供开箱即用的体验,适合快速搭建应用。Quarkus 由红帽发起,专为 GraalVM 和 HotSpot 设计,强调性能优化和资源消耗最小化,是云原生环境的理想选择。
957 3
|
JSON 数据格式
【❤强哥推荐❣】VSCode常用快捷键配置文件表、代码片段,记得收藏
【❤强哥推荐❣】VSCode常用快捷键配置文件表、代码片段,记得收藏
【❤强哥推荐❣】VSCode常用快捷键配置文件表、代码片段,记得收藏
|
消息中间件 存储 缓存
性能基础之大型网站技术架构模式
【2月更文挑战第15天】性能基础之大型网站技术架构模式
248 3
性能基础之大型网站技术架构模式
|
机器学习/深度学习 人工智能 自然语言处理
【自然语言NLP】TensorFlow使用LSTM实现情感分析任务
【自然语言NLP】TensorFlow使用LSTM实现情感分析任务
444 0
【自然语言NLP】TensorFlow使用LSTM实现情感分析任务
greendao存储嵌套数据
使用greendao存储数据过程中,我们会遇到bean嵌套的情况,这种情况怎么处理呢?我们需要用到greendao提供的`PropertyConverter`来处理。
|
存储 算法 NoSQL
小林手撕 LRU 算法!
今天,就带大家手撕 LRU 算法,先让大家回顾下案例,然后后面就进行代码讲解。
小林手撕 LRU 算法!
怎么样将淘宝店铺内的宝贝快速复制上传到新的店铺
以前可以用淘宝助理将旧店铺内的宝贝导出数据包,然后登陆新的店铺导入备份的数据包上传宝贝到新店铺,不过淘宝助理在21年的八月底正式下架停用了,现在可以用官方服务平台的软件,授权新店铺后复制宝贝上传到新的店铺。 如果想要免去授权这一设置,可以使用大淘营淘宝宝贝复制专家批量复制店铺内的宝贝上传新店铺,这一款软件自开发以来,使用的一直是自身的技术,不受淘宝的限制,一直是不需要授权就可以复制宝贝上传到新店铺。