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

在这里插入图片描述

相关文章
|
6天前
|
JavaScript 前端开发 安全
JavaScript函数详解
JavaScript函数的详细解析,包括函数的定义和调用方式(如一般格式、匿名函数、构造函数、自调用函数、箭头函数和严格模式)、函数参数(arguments对象、可变参数、默认参数值)、闭包的概念和应用实例。
JavaScript函数详解
|
5天前
|
JavaScript 前端开发
JavaScript函数可以返回两个值
JavaScript函数可以返回两个值
|
5天前
|
自然语言处理 分布式计算 JavaScript
JavaScript函数
JavaScript函数
|
6天前
|
缓存 JavaScript 前端开发
了解js基础知识中的作用域和闭包以及闭包的一些应用场景,浅析函数柯里化
该文章详细讲解了JavaScript中的作用域、闭包概念及其应用场景,并简要分析了函数柯里化的使用。
了解js基础知识中的作用域和闭包以及闭包的一些应用场景,浅析函数柯里化
|
3天前
|
存储 JavaScript 前端开发
JavaScript Number 对象
JavaScript Number 对象
7 0
|
3天前
|
JavaScript 前端开发
JavaScript prototype(原型对象)
JavaScript prototype(原型对象)
7 0
|
3天前
|
JavaScript 前端开发
JavaScript 对象
JavaScript 对象
7 0
|
3月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
76 2
|
3月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的宠物援助平台附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的宠物援助平台附带文章源码部署视频讲解等
67 4
|
3月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的宠物交易平台附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的宠物交易平台附带文章源码部署视频讲解等
59 4