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

时间:2020-12-25 11:52:31   收藏:0   阅读:0
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
  }
}
评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!