zoukankan      html  css  js  c++  java
  • Object对象常用方法总结

    【常用语法】
    //1.定义对象: var const let
    var Person = {
      name: '张三',
      birth,//等同于birth: birth
      hello() { console.log('我的名字是', this.name); }// 等同于hello: function ()...
    };

    //2.对象的合并assign:

    2.1.添加属性*************************************
    var target = { a: 1 };//合并成: {a:1, b:2, c:3},注:同名属性,则后面的属性会覆盖前面的属性。
    var source1 = { b: 2 };
    var source2 = { c: 3 };

    Object.assign(target, source1, source2);

    2.2.添加方法*********************************************
    Object.assign(SomeClass.prototype, {
      someMethod(arg1, arg2) {
        ···
      },
      anotherMethod() {
        ···
      }
    });
    // 等同于下面的写法
    SomeClass.prototype.someMethod = function (arg1, arg2) {
    ···
    };
    SomeClass.prototype.anotherMethod = function () {
    ···
    };

    2.3.克隆对象********************************************
    var obj1 = {a: {b: 1}};//obj1.a.b = 2;
    var obj2 = Object.assign({}, obj1);//克隆对象obj1,得到:obj2.a.b=2

    //只能克隆原始对象自身的值,不能克隆它继承的值。
    class Point {
      constructor(x, y) {
        Object.assign(this, {x, y});
      }
    }
    //解决方案
    function clone(origin) {
      let originProto = Object.getPrototypeOf(origin);
      return Object.assign(Object.create(originProto), origin);
    }

    2.4.合并多个对象

    const merge = (target, ...sources) => Object.assign(target, ...sources);
    const merge = (...sources) => Object.assign({}, ...sources);

    2.5.为属性指定默认值,即2.1的扩展
    const DEFAULTS = {
      logLevel: 0,
      outputFormat: 'html'
    };

    function processContent(options) {
      options = Object.assign({}, DEFAULTS, options);
      console.log(options);
      // ...
    }


    【实践操作:】

    //1.获取key value组合成数组:js ES6
    var obj = {
      "name" : "zh",
      "age" : 22,
    }
    1.1.对象自身属性遍历
    for(var key in obj){
      console.log(key); //键名
      console.log(obj[key]); //键值
      //if(obj.hasOwnProperty(key))

      if (obj.hasOwnProperty(key) === true) {
        console.log(obj[key])
      }

    }

    const  keys = Object.keys(obj);
    const  values = Object.values(obj);

    1.2.解构赋值
    let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 };
    x // 1
    y // 2
    z // { a: 3, b: 4 }

    1.3.扩展运算符
    let z = { a: 3, b: 4 };
    let n = { ...z };
    n // { a: 3, b: 4 }


    //2.取值判断问题

    2.1.读取对象内部的某个属性,往往需要判断一下该对象是否存在
    const firstName = message && message.body && message.body.user && message.body.user.firstName) || 'default';

    if(firstName){

    }
    2.2.现在有一个提案,引入了“Null 传导运算符”

    const firstName = message?.body?.user?.firstName || 'default';

    if(firstName){

    }

  • 相关阅读:
    linux命令(3)top
    linux命令(2)vmstat
    学习okhttp wiki--Connections.
    你可以更幸福(转载)
    Android中多表的SQLite数据库(译)
    怎样写有效的设计文档(译)
    Material Design说明
    Android原生Calendar代码阅读(一)
    Android Studio tips and tricks 翻译学习
    Material Calendar View 学习记录(二)
  • 原文地址:https://www.cnblogs.com/wheatCatcher/p/9968166.html
Copyright © 2011-2022 走看看