对象的学习

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

        window.onload = function () {

            // let info = { name: '后盾人', url: 'houdunren.com' };

            // // let {name:a,url:b} = info;

            // let { name, url } = info;

            // console.log(name);

            // console.log(url);//  这样就是在传参数的时候   就不用点语法来访问对象的属性

            // function hd() {

            //     return {

            //         name: '后盾人',

            //         url: 'houdunren.com'

            //     };

            // }

            // //当函数的返回值 是对象的时候可以使用解构赋值的方法

            // console.log(hd().name, hd().url);

            // //使用解构赋值的方法

            // let { name: n, url: b } = hd();

            // console.log(n);

            // console.log(b);

            "use strict";

            // function hd({ name, age }) {

            //     console.log(name, age); //向军大叔 18

            // }

            // hd({ name: "向军", age: 18 });

            // let info = ['后盾人', 'houdunren.com'];

            // let [, url] = info;  //如果不想输出某一个值的话  就可以使用,    来进行占位

            // console.log(url)

            // //将变量转换为对象  并且对他进行解构赋值

            // let name = "John";

            // let age = 18;

            // let hdd = { name: name, age: age };

            // console.log(name);

            // console.log(age);

            //嵌套的解构赋值

            //解构赋值的作用就是

            // let [name, site = 'hdcms'] = ['后盾人'];

            // console.log(name)

            //解构赋值添加默认参数

            //在解构赋值的过程中    给兑现添加默认参数

            // let obj = { name: "zhangsan", age: 18 };

            // let { name, age, user = "法外狂徒康散" } = obj;  //需要注意的是 在解构赋值的过程中   需要注意的是  创建的变量名不可以被重复创建  

            // //重复创建的时候   就会报错

            // //创建函数的时候,也可以对参数进行  解构赋值

            // //上传

            // function upload(params) {

            //     //使用扩展运算符  实现参数合并

            //     let config = {

            //         type: "*.jpg",

            //         size: 900

            //     };

            //     params = { ...config, ...params };

            //     console.log(params)

            // };

            // upload();

            // //对函数进行默认参数的传递

            // //使用解构赋值  设置函数的默认参数

            // function create(options) {

            //     let { width = '200px', height = '100px', backgroundColor = 'red' } = options;

            //     const h2 = document.createElement('h2');

            //     h2.style.width = width;

            //     h2.style.height = height;

            //     h2.style.backgroundColor = backgroundColor;

            //     document.body.appendChild(h2);

            // };

            // create({});

            // //向对象添加属性

            // let test_data = {};

            // test_data.name = "张三";

            // console.log(test_data);

            // //检查对象是不是包含指定属性

            // console.log(test_data.hasOwnProperty("name"));

            // //这样的话就说明指定的对象当中是包含该属性的

            // console.log(test_data.hasOwnProperty("age"));//如果包含指定的元素的话,返回true  不包含指定的元素的话  返回FALSE

            // //hasOwnProperty  只检测自身的属性不检查  原型链上的属性

            // //使用原型链的话  可以检查原型链上的属性

            // console.log("concat" in test_data)//  对象没有concat  属性

            // //创建数组

            // let arr = [];

            // console.log("concat" in arr);

            // // 获取当前对象的指定的属性

            // let test_data_one = Object.getOwnPropertyNames(test_data);

            // console.log(test_data_one);

            // //一个对象或者多个对象的复制

            // //使用方法  assign  

            // let one_obj = {

            //     name: "张三"

            // }

            // let test_one_obj = Object.assign(one_obj, { age: 18 }, { gender: "男" });

            // console.log(test_one_obj);

            // const lessons = [

            //     {

            //         title: "媒体查询响应式布局",

            //         category: "css"

            //     },

            //     {

            //         title: "FLEX 弹性盒模型",

            //         category: "css"

            //     },

            //     {

            //         title: "MYSQL多表查询随意操作",

            //         category: "mysql"

            //     }

            // ];

            // let lessonObj = lessons.reduce((obj, cur, index) => {

            //     obj[`${cur["category"]}-${index}`] = cur;

            //     return obj;

            // }, {});

            // console.log(lessonObj); //{css-0: {…}, css-1: {…}, mysql-2: {…}}

            // console.log(lessonObj["css-0"]); //{title: "媒体查询响应式布局", category: "css"}

            // //对象式引用类型  但是是传址操作

            // let hdd = {

            //     name:"xiaomi"

            // };

            // let hdUser = {

            //     hi:hdd

            // };

            // hdUser.hi.name="iphone";

            // console.log(hdd.name);

            //遍历对象

            // const hd = {

            //     name: "后盾人",

            //     age: 10

            // };

            // console.log(Object.keys(hd));

            // console.log(Object.values(hd));

            // console.log(Object.entries(hd));

            // let obj = { 0: "a", 1: "b", 3: "c" };

            // //使用for  in  遍历对象

            // for(let i in obj){

            //     console.log(i+"------"+obj[i]);

            // };

            // console.log(Object.getOwnPropertyNames(obj));

            // //检查是不是包含指定的属性

            // console.log(obj.hasOwnProperty("0"))

            // //所以是包含指定属性的

            //使用  for  of  遍历对象

            // let hd = {

            //     name:"张三",

            //     age:18

            // };

            // for(const index  of Object.keys(hd)){

            //     console.log(index)

            // };

            // //使用  for of  同时遍历对象的属性名  和  属性值

            // for(const [keys,values] of Object.entries(hd)){

            //     console.log(keys,values)

            // }

            let lessons = {

                name: "js", click: 23,

            }

            // let ul = document.createElement("ul");

            // lessons.reduce((pre, cur) => {

            //     let li = document.createElement("li");

            //     li.innerHTML = `姓名---${cur.name}---点击数---${cur.click}`

            //     ul.appendChild(li);

            // },[])

            // document.body.appendChild(ul);

            //使用for of  遍历数组型对象

            // let ul = document.createElement("ul");

            // lessons.forEach((item,index,arr)=>{

            //     let li = document.createElement("li");

            //     li.innerHTML = `name:${item.name}---点击数:${item.click}`

            //     ul.appendChild(li);

            // });

            // document.body.appendChild(ul);

            //对象的浅拷贝  和 对象的深拷贝

            //  使用点语法  完成对对象的浅复制

            let obj = {

                name: "后盾人"

            };

            let hd = { ...obj };

            hd.name = "hdcms";

            console.log(hd);

            console.log(obj);

            //对象的浅拷贝与深拷贝

            let list = ['河南','加油'];

            let copylist = [].concat(list);

            copylist.push("中国加油");

            console.log(copylist);

            console.log(list);

            //完成对象的深拷贝

            //数组的深拷贝

            let test_list = [{name:"张三"}];

            let a = test_list;

            test_list[0]="this is show time";

           console.log(a);

           console.log(test_list);

           //这样的话完成的是  对象的浅拷贝  

           //接下来完成的就是  对象的深拷贝

           let test_list_test = [{name:"王老五"}];

           let test = JSON.parse(JSON.stringify(test_list_test));

           test.name = "我就是我";

           console.log(test);

           console.log(test_list_test);

           //这样的话  二者互相修改就会回收到影响

        }

    </script>

</head>

<body>

</body>

</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值