Javascript 为什么不';我需要方法来设置或读取类属性?

Javascript 为什么不';我需要方法来设置或读取类属性?,javascript,class,Javascript,Class,在组合getter和setter时,我意识到它们不是必需的。 我错过了什么?如何确保调用属性时它们是类上的属性 'use strict'; const { Book } = require('../app'); const { Page } = require('../page'); const { Bookmark } = require('../bookmark'); // const chai = require('chai'); const expect = chai.expect;

在组合getter和setter时,我意识到它们不是必需的。
我错过了什么?如何确保调用属性时它们是类上的属性

'use strict';

const { Book } = require('../app');
const { Page } = require('../page');
const { Bookmark } = require('../bookmark');
//
const chai = require('chai');
const expect = chai.expect;

it('has a bookmark', function () {
  let bookmark = new Bookmark('bookmark');
  bookmark.material = 'paper';
  bookmark.mm='a';
  expect(bookmark.mm).to.equal('a');
  expect(bookmark.material).to.equal('paper');
})  

#../bookmark.js
class Bookmark {
  constructor(name) {
    this.name = name;
  }
}

exports.Bookmark = Bookmark;

我不知道你在问什么。它们是“类上的对象”,因为您在实例上调用它。你是在问如何让JavaScript像静态类型的ier语言一样工作吗?因为JavaScript没有“属性”,它只有属性,你可以在任何对象上任意创建这些属性。这可能更适合Typescript,但仍然不能确保类型安全。但是,如果我理解你的问题。。。你可以自己动手掷骰子抛出一个异常。@Bergi有。我来自Ruby,希望需要getter/setter,比如使用
attr\u访问器
。您是否只在javascript中需要更多属性时才使用它们?或者这同样适用于方法,即随时添加它们。ruby是动态的,但可以帮助您避免attr的输入错误。我猜很多js都在向DOM对象添加东西?@MichaelCurrent是的,只有当您想要一个不是普通数据属性的属性时,才使用访问器(
get
/
set
)。是的,这同样适用于方法,尽管通常情况下,它们都不是“在任何时候”添加的,而是以一种形式化的方式(即在构造函数中)以良好的代码添加的。