Javascript中的对象

254 阅读2分钟

Javascript中的对象

1.什么是对象

​ 1.可以理解为一种无序的数据集合

  1. 用来描述某个事物 ,例如描述一个人

  2. 一个人的信息

    静态特征 (姓名, 年龄, 身高, 性别, 爱好) => 可以使用数字, 字符串, 数组, 布尔类型等表示

    动态行为 ( 唱歌, 跳舞,) => 使用函数表示

2.对象的声明

1.声明一个对象,语法如下

let 对象名 = {

​ 属性名 : 属性值,

​ 方法名: 方法值

}

2.对象有属性和方法组成

​ 属性:信息或叫特征(名词)。 比如 手机尺寸、颜色、重量等…

​ 方法:功能或叫行为(动词)。 比如 手机打电话、发短信、玩游戏…

  <script>

        //描述一个复杂的事物,可以使用对象
        //对象也是一种数据类型 
        //有两个特点 1.属性 2.方法

        let user = {

            name  : '张三',
            age : 18 ,
            sex : '男',
			//注意的是属性值之间用,号分隔
            sayHi : function() {
                document.write(`你好`)
            }

        }
   </script>

3.对象属性的访问

声明对象,并添加了若干属性后,可以使用 . 或 [] 获得对象中属性对应的值,称之为属性访问。

   <script>    

        let name = 'color';

        let proson = {
            name : '卢克',

            color : '白色'

        }

        console.log(proson.name); //对象名.属性名 
        console.log(proson['color']); //这也是访问属性,[]中需要有分号才行


        //console.log(proson[name]); //如果访问一个对象属性是没有添加''号有可能出现报错 
        //console.log(proson.sayHi); ///这样的话会出现undefined,因为对象中没有赋值给sayHi属性

    </script>

4.对象中的方法书写与访问

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

  1. 方法是由方法名和函数两部分构成,它们之间使用 : 分隔

  2. 多个属性之间使用英文 , 分隔

  3. 方法是依附在对象中的函数

  4. 方法名可以使用 "" 或 '',一般情况下省略,除非名称遇到特殊符号如空格、中横线等

  5. 声明对象,并添加了若干方法后,可以使用 . 调用对象中函数,称之为方法调用(注意的是方法名后面需要有括号)。

  6. 对象方法也是可以传递参数的

      <script>
    
            //对象方法的使用
            let  person = {
    
                name : '张三',
                //msg接受实参
                sayHi : function (msg) {
                    document.write(msg)
                    //return 返回值给方法
                    return '来自于明星的问好'
    
                }
    
            }   
            //对象的方法也是函数一种 也可以写入参数
            //返回值可以被变量代替,方便使用
            let num = person.sayHi('大家好') 
    
            document.write(num)
        </script>
    

5.对象的操作

1.查询对象

查询对象有的形式

1.对象.属性

2.对象[‘属性’]

3.对象.方法名())

   <script>

 console.log(proson.name); //对象名.属性名 
     console.log(proson['color']); //这也是访问属性,[]中需要有分号才行
   </script>

2.重新赋值

1.对象.属性 = 值

2.对象.方法 = function() {}

3.注意点,如果对象中没有该属性名,那么将会添加属性到对象中

    <script>

        let proson =  {
            name : '张三',
            age : 18,
            sayHi : function () {
                document.write(`你好`)
            }

        }
        //对象的属性值修改 和新增类似 如果对象种没有这个属性 那么就添加属性 ,如有就修改
        proson.color = '白色'
        proson.name =  '李四'
        proson.aage = 19 
        //对象的方法也是可以修改的
        proson.sayHi =  function () {

            document.write(`这是新增的方法`)
        }
        //调用对象方法
       parson.sayHi()

    </script>

3.删除属性

delete 对象名.属性名

<script>

        let proson  = {
            //声明一个对象
            username : '火影',

        }

        // 删除对象属性
        delete person.username

        console.log(person.username); //undefined 因为对象里面不存在username的属性值 

    </script>

6.遍历对象(for in)

语法

for ( let k in 对象名) {

​ console.log(k) 找对象种属性名为k

​ console.log(对象名[k]) 也是找对象属性名'k'

}

<script>

        for (let k in person ) {

            //打印对象属性名
            console.log(k);

            //console.log(person.k) 找的对象种属性名为k
            //console.log(person['k']) 是找对象属性名'k'的值


            //打印对象的属性值
            console.log(person[k]);
            //person['username'] //k = 'username'
         }
       

</script>

7.遍历对象并生成表格的形式

需求如图

1648912479649

<!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>

        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        h3 {
            font-weight: 400;
        }

        table {
            border-collapse: collapse;
            margin: 0 auto;
        }

       th {
           background-color: #ccc;
           padding: 0 20px;
       }

        body {
            text-align: center;
            padding-top: 100px;
        }
        

    </style>
</head>
<body>
 
    <script>
        //数组信息
         let students = [
            {name:'小明',age:18,gender:'男',hometown:'河北省'},
            {name:'小红',age:19,gender:'女',hometown:'河南省'},
            {name:'小刚',age:17,gender:'男',hometown:'山西省'},
            {name:'小丽',age:18,gender:'女',hometown:'山东省'}
            ]


        //输入的页面效果图用字符串拼接加起来
        let tableHtml = ` <h3>学生列表</h3>
            <table border="1">
             <tr>
            <th>序号</th>
            <th>姓名</th>
            <th>年龄</th>
            <th>性别</th>
            <th>家乡</th>
         </tr>`

         //循环里面的表格内容
        for ( let i = 0 ; i < students.length;i++) {
           tableHtml += `<tr><td>${i+1}</td>`
            //循环重复代码 利用对象遍历for in 完成
            for (let k in students[i]) {
              tableHtml += `<td>${students[i][k]}</td>`
            }

            //循环完毕后的添加结束部分
            tableHtml +=  `</tr>`
        }
        //末尾添加结束标签
        tableHtml += `</table>`

        //在页面打印出效果
        document.write(tableHtml)


    </script>

</body>
</html>

7.内置对象Math

Math对象是JavaScript提供了一系列做数学运算的方法

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

2.ceil:向上取整

3.floor:向下取整

4.max:找最大数

5.min:找最小数

6.pow:幂运算

7.abs:绝对值

<script>

        //math内置对象

        //1.random()返回一个随机数 包含0 不包含1

        console.log(Math.random()); //随机

        //2.ceil() 向上取整 
        console.log(Math.ceil(0.5)); //1

        //3.向下取整floor 
        console.log(Math.floor(0.5)); //0

        //4.四舍五入 round()
        console.log(Math.round(0.6)); //1

        //5.求最大值  数学对象内置有方法 算出来 最大值和最小值
        console.log(Math.max(1,2,3,4,5,6,77,4));

        // 最小值
        console.log(Math.min(1,2,3,4,5,6,77,4));

        // 幂运算  对某个数字  平方 或者 立方。。。
        // 2 平方  =  2 * 2
        // 2 立方  = 2 * 2 * 2
        console.log(Math.pow(2, 3)); // 2立方 3个2相乘
        console.log(Math.pow(2, 2)); // 2平方
        console.log(Math.pow(3, 2)); // 3 的平方 


        // 绝对值  -1 =  1  -2 = 2 
        console.log(Math.abs(-2)); //2
        console.log(Math.abs(-3)); //3


    </script>

8.随机生成的数

  //生成0 - 10 的随机数
        //Math.random() 随机 0 - 1之间不包含1  所以用它与10相乘取值 范围就在0-10之间不包含10
        let random = parseInt(Math.random() * 10)  ;
                   
        //生成 5 - 10的随机数 
        let random1 = parseInt(math.random()* (5 + 1)) + 5


        //生成N - M 的数 
        let random2 = parseInt(math.random()* (m - N + 1)) + N