zoukankan      html  css  js  c++  java
  • 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
      }
    }
    
  • 相关阅读:
    Linux删除文件相关命令
    Bing语句
    VS2013配置Winpcap
    node10-mongoose
    node09-cookie
    node08-express
    node07-http
    node06-path
    node05-fs
    node04-buffer
  • 原文地址:https://www.cnblogs.com/ajanuw/p/14163363.html
Copyright © 2011-2022 走看看