javaScript 04 对象的使用

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: 对象概念、对象的属性与方法的使用、常见的内置对象

前言

理解什么是对象,掌握定义对象的语法 掌握数学对象的使用

掌握数学对象的使用

一、对象是什么?

  • 对象 对象是 JavaScript 数据类型的一种,之前已经学习了数值类型、字符串类型、布尔类型、undefined。
  • 对象数据类型可以被理解成是一种数据集合。它由属性和方法两部分构成。

二、对象使用

1.声明对象

let 对象名={ 这里存放属性与方法}

2.1对象中属性

数据描述性的信息称为属性,如人的姓名、身高、年龄、性别等,一般是名词性的。

  • 属性都是成 对出现的,包括属性名和值,名与值之间使用英文 : 分隔
  • 多个属性之间使用英文 , 分隔
  • 属性就是依附在对象上的变量
  • 属性名可以使用 "" 或 '' ,一般情况下省略,除非名称遇到特殊符号如空格、中横线等。

对象属性的书写方式:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
     /* 数组[]     有序数据集合 
        对象{}      无序数据集合  */
    // 1.对象的声明
    // 方法1:字面量生成对象
    // let 对象名 ={}
    // 方法二.new关键字生成对象
    // let obj = new obj{}
    // 2.对象构成
    // 对象由属性和方法组成
        // 属性由键值对格式组成键值之间用:隔开,属性之间用,隔开。
        let goods = {
            name : 'iPhone14',
            num : 100012816024,
            weight : `0.55kg`,
            address : '中国大陆',
            // 特殊字符的属性名也需要‘’包括起来
            'zhi-zao':'china'
        }
        console.log(goods);
        // 注意点:对象里面的属性名可以理解为变量,属性值相当于给变量赋值。
    </script>
</body>
</html>

对象属性的增删改查操作

我先定义一个名为goods的对象

c6a077fa06484039bd14ea9d40732e9a.png

1.查找对象属性        格式:对象名.属性(返回的是属性值)

左侧查语法,右侧页面查看

3d5f5e18b51e478f8adc19b5e0fee8bb.png

2.修改对象属性        格式:对象名.属性 =新值

e71c88d2b81a46848c413e5c16fc6674.png

控制台查看

157256029466464f85e805b93589de78.png

3.增加对象属性         格式: 对象名.新属性名=新值

bb5580da88dc43cc993584260dce623a.png

控制台查看

7c875a46ae764350ae0561be8aa4a121.png

4.删除对象属性         格式: delete 对象名.属性名

01878cb677bd46619f1eda0882830dfe.png

控制台查看

9457a734c1634d45b3ece69c0168c0af.png

附上对象属性的增删改查的全部代码与笔记👇


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        let goods = {
            name: 'iPhone14',
            num: 100012816024,
            weight: `0.55kg`,
            address: '中国大陆',
            // 特殊字符的属性名也需要‘’包括起来
            'produce-where': 'china'
        }
        // 查找对象   对象名.属性       返回的是属性值
        // 特殊属性名写法:[]写属性名
        /* 注意点:中括号一定需要引号才能接收变量名可解析变量,不然就当变量解析!!!
                  点语法解析不了特殊字符*/
        // console.log(goods['name']);
        document.write(goods['name'])
        document.write(goods.name)
        // 修改对象  对象名.属性 =新值
        // goods.num = 10088611
        // 增加对象    对象名.新属性名=新值
        // goods.size = '6.1英寸'
        // document.write(goods)
        // console.log(goods);
        // 删除对象
        // delete goods.weight
        // console.log(goods);
    </script>
</body>
</html>

2.2对象中方法

数据行为性的信息称为方法,如跑步、唱歌等,一般是动词性的,其本质是函数。

  1. 方法是由方法名和函数两部分构成,它们之间使用 : 分隔
  2. 多个属性之间使用英文 , 分隔
  3. 方法是依附在对象中的函数
  4. 方法名可以使用 "" 或 '' ,一般情况下省略,除非名称遇到特殊符号如空格、中横线等

 对象方法的书写方式:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        let person={
            name:'初映',
            //书写法则同属性一样 
            sayHi:function(){
                console.log('你好呀~');
            },
            sum:function (x,y){
                return x+y
            }
    }
    </script>
</body>
</html>

对象方法的增删改查操作

我先定义一个对象存放方法:

11ec21051b684cb7ad81eceb0d28ffd2.png

1.查找对象方法        格式:对象名.方法名()

55ea0ed870d04267bc3c51d19af5ef08.png

控制台查看

a33cfc97098148ee815edc1b304ea1cd.png

2.修改对象方法        格式:对象名.方法名=function{}

97b1bb12fddb46ab9eb370f05fcd0f05.png

控制台查看

0824f342c9f944cb8bcc67bbaa88a025.png

3.增加对象方法        格式:对象名.方法名=function{}

490a720d16404c0992cbf16c6db5d625.png

e1fd4ee83272494eae5f1142c7aec8f1.png

4.删除操作        格式:delete 对象名.方法名

0777205f8b2844ef9bd8120873939e04.png

控制台查看

373dc913c9644140a6597b10859104a3.png

附上对象属性的增删改查的全部代码与笔记👇

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        let person={
            name:'初映',
            //书写法则同属性一样 
            sayHi:function(){
                console.log('你好呀~');
            },
            sum:function (x,y){
                return x+y
            }
    }
    //查 
    // person.sayHi()
    // console.log(person.sum(1,2));
    // 改
    person.sayHi=function(){
        return '我已经把这个值给更改喽!'
    }
    // console.log(person.sayHi());
    // 增
    person.sing =function(){
        console.log('在唱歌');
    }
    // person.sing()
    // 删
    delete person.sing
    console.log(person);
    </script>
</body>
</html>

三.对象的相关操作

1.遍历对象         格式:for(变量 in 对象名){}

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        let person={
            name:'初映',
            height:184,
            sayHi:function(){
                console.log('你好呀~');
            },
            sum:function (x,y){
                return x+y
            }
    }
    for(let k in person){
        // 这里是访问的属性名
        // console.log(k);
        // k是变量需要[]解析,点语法无法解析,出现的是属性值
        console.log(person[k]);
    }
    </script>
</body>
</html>

控制台查看

da30d73614fa4bfb9e896fc6c32ee461.png

2.拓展:数组使用对象中的遍历方式        格式:for(变量 in 数组名){}


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        let arr = [10,20,30,40,50]
        for (let k in arr){
            console.log(k);
            // 用这个方法输出的是字符串类型的,但是我输出的是数值型,两者类型被改变了
            console.log(arr[k]);
        }
    </script>
</body>
</html>

控制台查看

52e56bea52fd49c187000ff170852f41.png

3.数组配合对象渲染数组使用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        let students = [
            { name: '小明', age: 18, gender: '蓝', hometown: '河北省' },
            { name: '小红', age: 18, gender: '女', hometown: '河南省' },
            { name: '小美', age: 18, gender: '女', hometown: '河北省' },
            { name: '小绿', age: 18, gender: '蓝', hometown: '山东省' }
        ]
        for (let i = 0; i < students.length; i++) {
            console.log(students[i]);
        }
    </script>
</head>
<body>
</body>
</html>

控制台查看

0850aa85abaa4381b5ad323b79b91366.png

四.内置对象

1.1内置对象是什么?

JavaScript内部提供的对象,包含各种属性和方法给开发者调用

我们之前是用过内置对象 ➢  document.write()  ➢ console.log()

1.2内置对象Math

Math对象是JavaScript提供的一个“数学”对象

作用:提供了一系列做数学运算的方法

官方Math文档:Math - JavaScript | MDN (mozilla.org)

web中常用的Math方法:

random:生成0-1之间的随机数(包含0不包括1)

  • ceil:向上取整
  • floor:向下取整
  • max:找最大数
  • min:找最小数
  • pow:幂运算
  • abs:绝对值

下面举几个例子:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // ceil()向上取整
        console.log(Math.ceil(1.5));//2
        console.log(Math.ceil(-1.5));//-1
        // floor()向下取整 
        console.log(Math.floor(-1.5));//-2
        console.log(Math.floor(1.5));//1
        //max()最大值,字符串会自动转
        console.log(Math.max(10,20,30,'50'));
        // round()四舍五入
        console.log(Math.round(1.5));//2
    </script>
</body>
</html>

1.2.1Math.random随机数使用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 规则:左闭右开[0,1 )
        console.log(Math.random());
        // 获取0-10的随机数
        console.log(Math.floor(Math.random()*11));
        // 获取5-10的随机数
    console.log(Math.floor( Math.random()*6+5));
        // 调用网页上的方法
        function getRandom(min, max) {
            min = Math.ceil(min);
            max = Math.floor(max);
            return Math.floor(Math.random() * (max - min + 1)) + min; //含最大值,含最小值
        }
        // 获取90-100的数
        console.log(getRandom(90,100));
    </script>
</body>
</html>

下面是调用Math官方获取区间值的函数生成的

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        let ra = getRandom(1, 10)
        // 开关思想:flag=true
        for(let i=1;i<=3;i++){
            let val = +prompt("请输入一个1-10的数字")
            if (val > ra) {
                alert('数字大了,继续猜~')
            } else if (val < ra) {
                alert('数字小了,继续猜~')
            }
            else {
                alert('猜对啦~')
                break
            }
            if(val===ra){
                alert('猜对啦~')
                // flag设置为false停止弹框提示
                break
            }
            if(i===3)
            {
                alert('三次机会使用结束~')
            }
            // if(flag){
            //     alert('三次机会使用结束~')
            // }
    }
        function getRandom(min, max) {
            min = Math.ceil(min);
            max = Math.floor(max);
            return Math.floor(Math.random() * (max - min + 1)) + min; //含最大值,含最小值
        }
    </script>
</body>
</html>

1.2.2颜色获取案例(这个很重要)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        body {
            background-color: #fff;
        }
        div {
            display: inline-block;
            width: 200px;
            height: 200px;
        }
    </style>
</head>
<body>
    <!-- 需求:该函数接收一个布尔类型参数,表示颜色的格式是十六进制还是rgb格式。
    ①:如果参数传递的是true或者无参数,则输出 一个随机十六进制的颜色
    ②:如果参数传递的是false,则输出 一个随机rgb的颜色 -->
    <script>
        console.log(getColor(true));
        //document.write()配合循环页面渲染生成多个数据
        for(let i=1;i<60;i++){
            document.write(`<div style =background-color:${getColor(true)}></div>`)
        }
        // 定义方法形参默认为空数组与变量为true(布尔值必须需要变量)
        function getColor(arr=[],flag = true) {
    // 返回16进制,,16进制最小为#000000-#ffffff
            // flag默认是true
            if (flag) {
                let str = '#'
                let arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f']
                // 16进制是#+6个数据,下面是产生六个数据,用const index 接收
                for (let i = 1; i < 7; i++) {
                    // 随机数最大值是数组长度-1因为下标从0开始的
                    const index = Math.floor(Math.random() * arr.length)
                    // 数组搭配下标获取数组产生的数据,之后用str接收
                    str = str + arr[index]
                }
                // 这个return必须写在循环外面,不然的话第一次循环遇到了return就结束了循环,每次都是随机产生一个值
                return str
            }
            else {
                // 返回rgb   255是rgb单个元素的取值为0-255
                const r = Math.floor(Math.random() * 256)
                const g = Math.floor(Math.random() * 256)
                const b = Math.floor(Math.random() * 256)
                // 模板字符串拼接输出
                return `rgb(${r},${g}.${b})`
            }
        }
    </script>
</body>
</html>


相关文章
|
1月前
|
JavaScript 前端开发
JavaScript Date(日期) 对象
JavaScript Date(日期) 对象
40 2
|
13天前
|
JavaScript 前端开发
如何在 JavaScript 中使用 __proto__ 实现对象的继承?
使用`__proto__`实现对象继承时需要注意原型链的完整性和属性方法的正确继承,避免出现意外的行为和错误。同时,在现代JavaScript中,也可以使用`class`和`extends`关键字来实现更简洁和直观的继承语法,但理解基于`__proto__`的继承方式对于深入理解JavaScript的面向对象编程和原型链机制仍然具有重要意义。
|
17天前
|
Web App开发 JavaScript 前端开发
如何确保 Math 对象的方法在不同的 JavaScript 环境中具有一致的精度?
【10月更文挑战第29天】通过遵循标准和最佳实践、采用固定精度计算、进行全面的测试与验证、避免隐式类型转换以及持续关注和更新等方法,可以在很大程度上确保Math对象的方法在不同的JavaScript环境中具有一致的精度,从而提高代码的可靠性和可移植性。
|
17天前
|
JavaScript 前端开发 图形学
JavaScript 中 Math 对象常用方法
【10月更文挑战第29天】JavaScript中的Math对象提供了丰富多样的数学方法,涵盖了基本数学运算、幂运算、开方、随机数生成、极值获取以及三角函数等多个方面,为各种数学相关的计算和处理提供了强大的支持,是JavaScript编程中不可或缺的一部分。
|
1月前
|
存储 JavaScript 前端开发
JavaScript 对象的概念
JavaScript 对象的概念
38 4
|
1月前
|
缓存 JavaScript 前端开发
JavaScript中数组、对象等循环遍历的常用方法介绍(二)
JavaScript中数组、对象等循环遍历的常用方法介绍(二)
33 1
|
1月前
|
存储 JavaScript 前端开发
js中函数、方法、对象的区别
js中函数、方法、对象的区别
16 2
|
1月前
|
JavaScript 前端开发 Unix
Node.js 全局对象
10月更文挑战第5天
28 2
|
1月前
|
存储 JavaScript 前端开发
js中的对象
js中的对象
19 3
|
1月前
|
JavaScript 前端开发
JavaScript Math(算数) 对象
JavaScript Math(算数) 对象
20 4