zoukankan      html  css  js  c++  java
  • JavaScript-对象

    对象

    创建对象

    • 使用new关键字

      let obj = new Object();
      
    • 使用字面量创建

      let obj = {};
      

    对象常用方法

    • 属性遍历

      for (let key in obj){
          // ...
      }
      
    • 属性删除

      delete obj.name;
      delete obj.say;
      
    • 判断属性有无

      // in 会在原型链上查找
      console.log(attrName in obj);
      
      // hasOwnPrototype 只会在构造函数中寻找
      console.log(obj.hasOwnPrototype(attrName));
      
    • 解构赋值

      // 解构赋值定义的变量名必须与对象内部属性名相同,否则无法赋值成功
      // 解构赋值可以为变量赋默认值
      let obj = {name: 'zs', age: 18};
      let {name, age = 20, gender = 'man'} = obj;
      console.log(name, age, gender); // 'zs' 18 man
      

    对象深拷贝

    • 深拷贝:通过一个参数给另一个参数赋值后,改变新的参数,不会修改原有参数。基本数据类型都是深拷贝。

    • 浅拷贝:通过一个参数给另一个参数赋值后,改变新的参数,原有参数也会被修改。引用数据类型都是浅拷贝。

      // 对象深拷贝
      // 通过assign函数
      let newObj = Object.assign({}, obj);
      
      // 自定义函数实现对象深拷贝
      let deepCopy = (target, source) => {
          for (let key in source){
              if (source[key] instanceof Object){
                  target[key] = new source[key].constructor;
                  deepCopy(target[key], source[key]);
              } else {
                  target[key] = source[key];
              }
          }
          return target;
      }
      
  • 相关阅读:
    从一个小程序跳到另一个小程序的写法
    小程序input组件失焦的使用
    小程序弹框wx.showModal的使用
    小程序在选择某一个东西的时候,可以用if,else 来做
    reverse啥时候可以用
    js中array.some()的用法
    element ui的table的头部自定义
    逻辑表达式
    cookie
    命名
  • 原文地址:https://www.cnblogs.com/luwenfeng/p/11693754.html
Copyright © 2011-2022 走看看