js关于对象

149 阅读1分钟

www.wolai.com/mWFbPsi42Um…

声明对象,访问对象属性


        // 声明一个产品对象,里面包含以下信息
        // 对象是一个产品信息可以命名为:  goods
        // 商品名称:name
        // 商品编号:num
        // 商品毛重:weight
        // 商品产地:address

        let goods = {
            name: 'xiaomi',
            num: 1,
            weight: '190克',
            addrss: '中国'
        }
        // 访问对象中的属性

        // 两种访问方式,对象名    .属性名    
        console.log(goods.name);
        // 对象名['']  ,注意用中括号里面属性名要用引号
        console.log(goods['num']);
        console.log(goods['weight']);
        

遍历对象

要遍历对象的属性值 用英文中阔号 [ ]

  <script>
        let person = {
            name: '李狗蛋',
            age: 18,
            sex: '男'
        }

        // 利用 for in 遍历对象 key 代表属性名  
        for (let key in person) {
            // 在遍历属性名
            console.log(key);

            // 在遍历对象的时候不能用 对象名.key的这种方式获取对象中的属性值
            // 意为访问当前对象叫key的属性名,而当前没有叫key的属性名,
            //所以控制台输出为 undefined
            console.log(person.key);

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

    </script>
    

扩展 not 选择器

**选中不是p的标签 **

数组对象

意为 数组里面的是对象

 <script>

        // 数组对象
        let students = [
            { name: '李狗蛋', age: 18, gender: '男', hometown: '广东省' },
            { name: '张翠花', age: 19, gender: '女', hometown: '四川省' },
            { name: '赵铁柱', age: 17, gender: '男', hometown: '广西省' },
            { name: '钱多多', age: 18, gender: '女', hometown: '湖南省' }
        ]
        // 怎么得到李狗蛋这个名字
        console.log(students[0].gender);
        console.log(students[1].name);

    </script>
    

结果

数学内置对象(数学高手)

<script>
        console.log(Math);

        // 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));

    </script>

随机数

 <script>
        // 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))
    </script>

随机点名

  <script>
        // 封装随机数函数
        function getRandom(min, max) {
            return Math.floor(Math.random() * (max - min + 1)) + min
        }

        // 声明一个数组
        let arr = ['赵云', '黄忠', '关羽', '张飞', '马超', '刘备', '曹操']

        // 生成1个随机数 作为数组的索引号并 输出索引对应元素
        let num = getRandom(0, arr.length - 1)
        document.write(arr[num])

    </script>

**简单数据类型存储 和引用数据类型存储的不同:简单数据类型存储在 栈 里的是 值

而引用数据类型存储在 栈 里的是地址**


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

        let obj2 = obj1

        obj2 = {}

        console.log(obj1);

当把obj1 赋 给obj2 时 ,打印obj2是 obj1的内容,再给obj 新的内容不会修改obj1的内容



        let arr1 = ['李狗蛋', '张翠花']
        let arr2 = arr1

        arr2[0] = '赵铁柱'
        console.log(arr2);
        console.log(arr1);

同样arr1 赋给 arr2 ,这时 改arr2里的某一项,再去打印arr1时会发现arr1里的也一起改了,(也就是arr2得到的是 arr1 存在栈里的地址,而修改时 也按照这个地址去到堆里修改了 值