首页 > 解决方案 > 默认对象属性

问题描述

我正在使用 ES6 类并更好地管理类的数组属性,我用一个对象替换了数组,并添加了所有与数组相关的函数(获取、添加、删除等)以及数组子属性:

class MyClass {
constructor () {
    this.date_created = new Date()
}
posts = {
    items: [],
    get: () => {
        return this.posts.items
    },
    add: (value) => this.posts.items.unshift(value),
    remove: (index) => this.posts.items.splice(index, 1)
}
}

所以它让我思考:有没有办法设置该posts对象以默认返回项目数组?即通过:MyClass.posts 我以为我可以用 the 来欺骗它,get()但没有用。

标签: javascriptecmascript-6es6-class

解决方案


如果您想保持实际数组隐藏且不可触摸,除非通过方法,它必须在构造函数中声明。任何改变它的函数也必须在构造函数中声明。如果该项目要公开访问,则必须附加到this.

class Post extends Array
{
  add(val)
  {
    this.unshift(val);
  }
  remove()
  {
    this.shift();
  }
}

class MyClass 
{
  constructor() 
  {
    this.date_created = new Date()
    
    this.post = new Post();
  }
}
let x = new MyClass();
console.log(x.post);
x.post.add(2);
console.log(x.post);


推荐阅读