JS对象

119 阅读3分钟

对象

  • 对象是一种数据类型

  • 无序的数据的集合

  • 可以详细的描述描述某个事物

声明

let 对象名 = {
属性:属性值
方法:函数
}
//声明了一个名为person的对象
let person = {}
  • 属性

    • 信息或特征(名词)
    • 属性都是成 对出现的,包括属性名和值,它们之间使用英文 : 分隔
    • 多个属性之间使用英文 , 分隔
    • 属性名可以使用 "" 或 '',一般情况下省略,除非名称遇到特殊符号如空格、中横线等
  • 属性访问

    • 点形式 对象.属性

      • 点后面的属性名一定不要加引号
    • [ ] 形式 对象[‘属性’]

      • [ ] 里面的属性名一定加引号
        let banban = {
            name: '钟焕煜',
            age: '12',
            gender: '女',
            checkPhone: function () {
                console.log('你胸牌带了嘛?');
            },
            'sing song': '月亮之上'
        }

        console.log(banban);
        console.log(banban.name);
        console.log(banban.gender);

        // []的方式进行属性访问  对象名['属性名']   对象名[变量]  []里面如果不加''会被当成变量
        console.log(banban['name']);
        console.log(banban['age']);
        console.log(banban['sing song']);
  • 方法

    • 功能或行为(动词)
    • 方法是由方法名和函数两部分构成,它们之间使用 : 分隔
    • 多个属性之间使用英文 , 分隔
    • 方法名可以使用 "" 或 '',一般情况下省略,除非名称遇到特殊符号如空格、中横线等
  • 方法访问

    • 方法名后面加小括号

      let goods = {
            name: '小米',
            num: 1000032313,
            weight: '0.55kg',
            address: '中国大陆',
            play: function (game = '我的世界') {
                console.log(`我要玩${game}`);
            }
        }
        goods.play()//方法名后面加小括号

操作对象

        let person = {
            name: '李狗蛋',
            age: 18
        }

        // 查:直接对象.属性即可
        console.log(person.name);
        console.log(person['age']);


        // 增: 对象.属性 = 值   如果对象中没有设置的属性则会新增一个属性
        person.sex = '男'
        console.log(person);

        // 增: 对象.方法 = 匿名函数 也可以动态为对象 添加方法,语法更加灵活
        person.sayHi = function () {
            console.log('大家好~请多多关照');
        }
        console.log(person);
        person.sayHi()

        // 改: 对象.属性 = 值   如果对象中有对应的属性则会更新属性值
        person.name = '张翠花'
        console.log(person);

        // 删: delete 对象.属性

        delete person.name

        console.log(person);
  • 增加属性

    • 无论是属性或是方法,同一个对象中出现名称一样的,后面的会覆盖前面的

遍历对象

  • for in
  • 一般不用这种方式遍历数组、主要是用来遍历对象
  • k 是获得对象的属性名, 对象名[k] 是获得 属性值
        let person = {
            name: '李狗蛋',
            age: 18,
            sex: '男'
        }

        // 利用 for in 遍历对象 key 代表属性名  
        for (let key in person) {
            console.log(key);
            // 在遍历对象的时候不能用 对象名.key的这种方式获取对象中的属性值
            // console.log(person.key);

            // 当前遍历的属性值
            console.log(person[key]);
        }

内置对象

     // Math.random() 求从0 - 1 的随机数(包括0 不包括1)
        console.log(Math.random())

        // Math.ceil() 向上取整
        console.log(Math.ceil(1.1));
        console.log(Math.ceil(1.9));
        console.log(Math.ceil(0.9));
        console.log(Math.ceil(-0.9));
        console.log(Math.ceil(-2.1));

        // Math.floor() 向下取整
        console.log(Math.floor(1.1));
        console.log(Math.floor(1.9));
        console.log(Math.floor(2.1));
        console.log(Math.floor(-2.1));
        console.log(Math.floor(-1.1));

        // Math.max() 求最大值
        console.log(Math.max(9, 3, 1, 45, 0));

        // Math.min() 求最小值
        console.log(Math.min(9, 3, 1, 45, 0));


        // 四舍五入  Math.round()
        console.log(Math.round(1.1));
        console.log(Math.round(1.4));
        console.log(Math.round(1.5));
        console.log(Math.round(1.8));

        // 幂运算
        console.log(Math.pow(2, 10));

  • 随机数
 // 0 - 10的随机数
        // Math.random() -> [0, 1)
        // Math.random() * 10 -> [0,10)
        // 向下取整 Math.floor()
        // Math.random() * 11 -> [0,11)
        // console.log(Math.floor(Math.random() * 11));


        // 5 - 10的随机数
        // 0 - 5的随机数 + 5
        // console.log(Math.floor(Math.random() * (5 + 1)) + 5);

        // 3 - 5的随机数 先做 0 - 2的随机数 Math.floor(Math.random() * (2 + 1))+3  


        // min - max 的随机数
        function getRandom(min, max) {
            return Math.floor(Math.random() * (max - min + 1)) + min
        }
        console.log(getRandom(20, 40))