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 测试结果

在这里插入图片描述

相关文章
|
5天前
|
自然语言处理 JavaScript 前端开发
深入理解JavaScript中的闭包:原理与实战
【10月更文挑战第12天】深入理解JavaScript中的闭包:原理与实战
|
8天前
|
SQL 前端开发 JavaScript
Nest.js 实战 (十五):前后端分离项目部署的最佳实践
这篇文章介绍了如何使用现代前端框架Vue3和后端Node.js框架Nest.js实现的前后端分离架构的应用,并将其部署到生产环境。文章涵盖了准备阶段,包括云服务器的设置、1Panel面板的安装、数据库的安装、域名的实名认证和备案、SSL证书的申请。在部署Node服务环节,包括了Node.js环境的创建、数据库的配置、用户名和密码的设置、网站信息的填写、静态网站的部署、反向代理的配置以及可能遇到的常见问题。最后,作者总结了部署经验,并希望对读者有所帮助。
45 11
|
1天前
|
存储 JavaScript 前端开发
JS函数提升 变量提升
【10月更文挑战第6天】函数提升和变量提升是 JavaScript 语言的重要特性,但它们也可能带来一些困惑和潜在的问题。通过深入理解和掌握它们的原理和表现,开发者可以更好地编写和维护 JavaScript 代码,避免因不了解这些机制而导致的错误和不一致。同时,不断提高对执行上下文等相关概念的认识,将有助于提升对 JavaScript 语言的整体理解和运用能力。
|
8天前
|
存储 JavaScript 前端开发
前端开发:Vue.js入门与实战
【10月更文挑战第9天】前端开发:Vue.js入门与实战
|
21小时前
|
JavaScript 前端开发
JavaScript 作用域
JavaScript 作用域是指程序中可访问变量、对象和函数的区域。主要分为函数作用域和全局作用域。函数作用域内的变量仅在该函数内可见,而全局变量在整个程序中都可访问。未使用 `var` 声明的变量自动成为全局变量。局部变量在函数执行完毕后会被销毁。
|
21小时前
|
JavaScript 前端开发
JavaScript 函数语法
JavaScript 函数是由关键词 `function` 开头的代码块,用于执行特定任务。函数可以无参数或带多个参数,参数以逗号分隔。调用函数时,传入的参数值会被函数内部使用。JavaScript 对大小写敏感,函数名和调用时必须保持一致。示例展示了如何通过按钮点击调用带参数的函数,根据不同的参数显示不同的欢迎信息。
|
4天前
|
存储 JavaScript 前端开发
JavaScript数据类型全解:编写通用函数,精准判断各种数据类型
JavaScript数据类型全解:编写通用函数,精准判断各种数据类型
9 0
|
4天前
|
JavaScript 前端开发 大数据
在JavaScript中,Object.assign()方法或展开语法(...)来合并对象,Object.freeze()方法来冻结对象,防止对象被修改
在JavaScript中,Object.assign()方法或展开语法(...)来合并对象,Object.freeze()方法来冻结对象,防止对象被修改
6 0
|
3月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
83 2
|
3月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的小区物流配送系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的小区物流配送系统附带文章源码部署视频讲解等
102 4