JavaScript基础&实战(4)js中的对象、函数、全局作用域和局部作用域

简介: 这篇文章介绍了JavaScript中对象的基本概念和操作,包括对象属性和方法的使用、对象字面量的创建、函数的定义和作用域的概念,以及全局作用域和局部作用域的区别和特性。

文章目录

  • 1、对象的简介
  • 2、对象的基本操作
    • 2.1 代码
    • 2.2 测试结果
  • 3、属性和属性值
    • 3.1 代码
    • 3.2 测试结果
  • 4、对象的方法
    • 4.1 代码
    • 4.2 测试结果
  • 5、对象字面量
    • 5.1 代码
    • 5.2 测试结果
  • 6、函数
    • 6.1 代码
    • 6.2 测试结果
  • 7、全局作用域和局部作用域
    • 7.1 代码
    • 7.2 测试结果

1、对象的简介

在这里插入图片描述

2、对象的基本操作

2.1 代码

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>对象的基本操作</title>
    <style type="text/css"> </style>

    <script type="text/javascript">

    /*
                  创建对象:

                         使用new关键字调用的函数,是构造函数constructor
                             构造函数是专门用来创建对象的函数

                              使用typeof检查一个对象时,返回的类型是 object

    */

        /*
                   在对象中保存的值称为属性
                      向对象中添加属性:
                                     语法:
                                           对象.属性名 = 属性值

                      读取对象中的属性:
                                     语法:
                                          对象.属性名
                                        如果读取为定义的属性,不会报错,返回undefined

                      修改对象中的属性:
                                     语法: 
                                         对象.属性名 = 新的属性值

                      删除对象中的属性:
                                      语法:
                                          delete 对象.属性名

        */
              var obj = new Object();

              //向obj对象添加一个name属性
              obj.name = "唐僧";

              //向obj对象添加一个gender属性
              obj.gender = "男";

              //向obj对象添加一个age属性
              obj.age = 18;

              console.log(obj);

              console.log(obj.name);
    </script>
</head>

<body>

</body>

</html>

2.2 测试结果

在这里插入图片描述

3、属性和属性值

3.1 代码

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>属性名和属性值</title>
    <style type="text/css"> </style>

    <script type="text/javascript">

    /*

                       向对象中添加属性 
                            属性名:
                                - 对象的属性名不强制要求遵循标识符的规范

                      如果要使用特殊的属性名,不能采用.的方式操作
                         需要使用另一种方式:
                                    语法: 对象["属性名"] = 属性值
                         读取时也需要采用这种方式

                         使用[]这种形式去操作属性,更加的灵活
                         在[]中可以直接传递一个变量,这样变量值是多少就会去读取那个属性

    */

    /*

                        属性值
                            JS对象的属性值,可以是任意的数据类型



    */

                              var car = new Object();
                              car["kdjak38^%$#"] = "hello";
                              console.log(car["kdjak38^%$#"]);

                              car["123"] = 567;
                              var n = "123";
                              console.log(car[n]);
    </script>
</head>

<body>

</body>

</html>

3.2 测试结果

在这里插入图片描述

4、对象的方法

4.1 代码

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>方法</title>
    <style type="text/css"> </style>

    <script type="text/javascript">

    /*

                 对象的属性值可以是任意的数据类型,也可以是个函数

    */         
                 var obj = new Object();    
                 obj.username = "小红";
                 obj.age = 18;
                 obj.say = function(){
                     console.log("我是小红的方法")
                 }

                 obj.say();


    </script>
</head>

<body>

</body>

</html>

4.2 测试结果

在这里插入图片描述

5、对象字面量

5.1 代码

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>对象字面量</title>
    <style type="text/css"> </style>

    <script type="text/javascript">

    /*

                       使用对象字面量,可以在创建对象时,直接指定对象中的属性

                                      语法:{属性名:属性值,属性名:属性值...}

                                      对象字面量的属性名可以加引号也可以不加,建议不加
                                         如果需要使用一些特殊的名字,则必须加引号

                                         属性名和属性值是一组一组的名值对,多个名值对之间使用逗号隔开

    */

                        var car = { 

                            name:"奥迪",
                            color:"黑色"

                        };
                        console.log(car);
    </script>
</head>

<body>

</body>

</html>

5.2 测试结果

在这里插入图片描述

6、函数

6.1 代码

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>函数</title>
    <style type="text/css"> </style>

    <script type="text/javascript">

    /*

                      函数function
                         - 函数也是一个对象
                         - 函数中可以封装一些功能 (代码),在需要的时候可以执行这些功能(代码)
                         - 函数中可以保存一些代码在需要的时候调用
                         - 使用typeof检查一个函数的时候,返回是function


                    创建一个函数对象:
                            可以将要封装的代码以字符串的形式传递给构造函数


    */
                    //  创建一个函数对象
                    //  可以将要封装的代码以字符串的形式传递给构造函数
                    var fun = new Function("console.log('hello');");

                    //封装到函数中的代码不会立刻执行
                    //函数中的代码会在调用的时候执行
                    //调用函数语法:函数对象()
                    //当调用函数时,函数中封装的代码会按照顺序执行
                    fun();

    /*                

                    使用函数声明来创建一个函数
                                        语法:
                                          function 函数名([形参1,形参2...]){

                                          }
    */       

                                function fun2(){
                                        console.log("我的函数");
                                        alert("hhhh")
                                        document.write("hhhhedu");
                                }

                                //代码执行
                                fun2();

    /*
                                使用函数表达式 来创建一个函数
                                var 函数名  = function([形参1,形参2...]){
                                    语句
                                }

    */                            

    </script>
</head>

<body>

</body>

</html>

6.2 测试结果

在这里插入图片描述

7、全局作用域和局部作用域

7.1 代码

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>标题</title>
    <style type="text/css"> </style>

    <script type="text/javascript">

    /*
                    作用域
                       - 作用域指一个变量的作用的范围

                       在JS中一共有两种作用域:
                            1、全局作用域:
                                 - 直接编写在script标签中的JS代码,都在全局作用域
                                 - 全局作用域在页面打开时创建,在页面关闭时销毁
                                 - 在全局作用域中有一个全局对象window,
                                   它代表的是一个浏览器的窗口我们可以直接使用
                                 - 在全局作用域中:
                                              创建的变量都会作为window对象的属性保存
                                              创建的函数都会作为window对象的方法保存
                                 - 全局作用域中的变量都是全局变量
                                     再页面的任意的部分都可以访问的到

                            2、函数作用域
                                - 调用函数时创建函数作用域,函数执行完毕后,函数作用域销毁
                                - 每调用一次函数就会创建一个新的函数作用域,他们之间是相互独立的
                                - 在函数作用域中可以访问到全局作用域的变量,
                                - 在全局作用域中无法访问到函数作用的变量
                                - 当在函数作用域操作一个变量时,首先在自身作用域中寻找,如果有就直接使用
                                       如果没有则向上一级作用域中寻找,直到直到全局作用域中,
                                       如果全局作用域中依然没有找到,则会报错ReferenceError

                                在函数作用域也有声明提前的特性:
                                      使用var关键字声明的变量,会在函数中所有的代码执行之前被声明
                                       函数声明也会在函数中所有的代码执行之前执行



    */
                           function fun(){
                               console.log("我是fun函数");
                           }

                           fun();
                           window.fun();

                           console.log(window)

                /*
                      变量的声明提前
                                 - 使用var关键字声明的变量,会在所有的代码执行之前被声明
                                      但是如果声明变量时不适用var关键字,则变量不会被提前声明

                */
                           console.log("a = "+ a);
                           var a = 123;


                /*
                      函数的声明提前:
                                 - 使用函数声明形式创建的函数functio 函数(){}
                                     它会在所有的代码执行之前就被创建。可以在函数声明前进行调用


                      使用表达式创建的函数不能被提前声明

                      var fun1 = function(){
                              语法                   //不能被提前声明
                      }

                */

                  fun3();
                  function fun3(){
                      console.log("我是fun3()")
                  }



    </script>
</head>

<body>

</body>

</html>

7.2 测试结果

在这里插入图片描述

相关文章
|
7月前
|
人工智能 自然语言处理 JavaScript
通义灵码2.5实战评测:Vue.js贪吃蛇游戏一键生成
通义灵码基于自然语言需求,快速生成完整Vue组件。例如,用Vue 2和JavaScript实现贪吃蛇游戏:包含键盘控制、得分系统、游戏结束判定与Canvas动态渲染。AI生成的代码符合规范,支持响应式数据与事件监听,还能进阶优化(如增加启停按钮、速度随分数提升)。传统需1小时的工作量,使用通义灵码仅10分钟完成,大幅提升开发效率。操作简单:安装插件、输入需求、运行项目即可实现功能。
397 4
 通义灵码2.5实战评测:Vue.js贪吃蛇游戏一键生成
|
3月前
|
JavaScript 前端开发 安全
【逆向】Python 调用 JS 代码实战:使用 pyexecjs 与 Node.js 无缝衔接
本文介绍了如何使用 Python 的轻量级库 `pyexecjs` 调用 JavaScript 代码,并结合 Node.js 实现完整的执行流程。内容涵盖环境搭建、基本使用、常见问题解决方案及爬虫逆向分析中的实战技巧,帮助开发者在 Python 中高效处理 JS 逻辑。
|
5月前
|
JavaScript 前端开发 算法
流量分发代码实战|学会用JS控制用户访问路径
流量分发工具(Traffic Distributor),又称跳转器或负载均衡器,可通过JavaScript按预设规则将用户随机引导至不同网站,适用于SEO优化、广告投放、A/B测试等场景。本文分享一段不到百行的JS代码,实现智能、隐蔽的流量控制,并附完整示例与算法解析。
156 1
|
6月前
|
机器学习/深度学习 JavaScript 前端开发
JS进阶教程:递归函数原理与篇例解析
通过对这些代码示例的学习,我们已经了解了递归的原理以及递归在JS中的应用方法。递归虽然有着理论升华,但弄清它的核心思想并不难。举个随手可见的例子,火影鸣人做的影分身,你看到的都是同一个鸣人,但他们的行为却能在全局产生影响,这不就是递归吗?雾里看花,透过其间你或许已经深入了递归的魅力之中。
274 19
|
7月前
|
资源调度 JavaScript 前端开发
Day.js极简轻易快速2kB的JavaScript库-替代Moment.js
dayjs是一个极简快速2kB的JavaScript库,可以为浏览器处理解析、验证、操作和显示日期和时间,它的设计目标是提供一个简单、快速且功能强大的日期处理工具,同时保持极小的体积(仅 2KB 左右)。
406 24
|
8月前
|
编解码 JavaScript 前端开发
【Java进阶】详解JavaScript的BOM(浏览器对象模型)
总的来说,BOM提供了一种方式来与浏览器进行交互。通过BOM,你可以操作窗口、获取URL、操作历史、访问HTML文档、获取浏览器信息和屏幕信息等。虽然BOM并没有正式的标准,但大多数现代浏览器都实现了相似的功能,因此,你可以放心地在你的JavaScript代码中使用BOM。
253 23
|
8月前
|
JavaScript
JS实现多条件搜索函数
JS封装的多条件搜索
|
9月前
|
JavaScript 前端开发 算法
JavaScript 中通过Array.sort() 实现多字段排序、排序稳定性、随机排序洗牌算法、优化排序性能,JS中排序算法的使用详解(附实际应用代码)
Array.sort() 是一个功能强大的方法,通过自定义的比较函数,可以处理各种复杂的排序逻辑。无论是简单的数字排序,还是多字段、嵌套对象、分组排序等高级应用,Array.sort() 都能胜任。同时,通过性能优化技巧(如映射排序)和结合其他数组方法(如 reduce),Array.sort() 可以用来实现高效的数据处理逻辑。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
9月前
|
监控 JavaScript 前端开发
MutationObserver详解+案例——深入理解 JavaScript 中的 MutationObserver:原理与实战案例
MutationObserver 是一个非常强大的 API,提供了一种高效、灵活的方式来监听和响应 DOM 变化。它解决了传统 DOM 事件监听器的诸多局限性,通过异步、批量的方式处理 DOM 变化,大大提高了性能和效率。在实际开发中,合理使用 MutationObserver 可以帮助我们更好地控制 DOM 操作,提高代码的健壮性和可维护性。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
MutationObserver详解+案例——深入理解 JavaScript 中的 MutationObserver:原理与实战案例