• js {}与class属性描述符的区别


    let data = {
      name: "ajanuw",
      change() {
        this.name = "Ajanuw";
      },
      get message() {
        console.log(this);
        return "hello " + this.name;
      },
    };
    console.log( Object.getOwnPropertyDescriptors(data) );
    
    {
      name: {
        value: 'ajanuw',
        writable: true,
        enumerable: true,
        configurable: true
      },
      change: {
        value: [Function: change],
        writable: true,
        enumerable: true,
        configurable: true
      },
      message: {
        get: [Function: get message],
        set: undefined,
        enumerable: true,
        configurable: true
      }
    }
    
    class Ajanuw {
      name = "ajanuw";
      constructor() {
        this.name = "suou";
      }
      change() {
        this.name = "Ajanuw";
      }
      get message() {
        return "hello " + this.name;
      }
    }
    let data = new Ajanuw();
    console.log( Object.getOwnPropertyDescriptors(data) );
    console.log( Object.getOwnPropertyDescriptors( Object.getPrototypeOf(data) ) );
    
    {
      name: {
        value: 'suou',
        writable: true,
        enumerable: true,
        configurable: true
      }
    }
    {
      constructor: {
        value: [class Ajanuw],
        writable: true,
        enumerable: false,
        configurable: true
      },
      change: {
        value: [Function: change],
        writable: true,
        enumerable: false,
        configurable: true
      },
      message: {
        get: [Function: get message],
        set: undefined,
        enumerable: false,
        configurable: true
      }
    }
    
  • 相关阅读:
    POJ——T2186 Popular Cows || 洛谷——P2341 [HAOI2006]受欢迎的牛
    Tarjan缩点【模板】
    shell(1):网络配置、BATH环境和通配符
    STL
    J
    H
    G
    模板整理(二)
    B
    0-1背包问题
  • 原文地址:https://www.cnblogs.com/ajanuw/p/14163363.html
Copyright © 2020-2023  润新知