当前位置: 首页 > 面试题库 >

匿名类实例-这是个坏主意吗?

仇迪
2023-03-14
问题内容

在ES6中,我们可以进行匿名类:

var entity = class {
}

但是我们也可以实例化它:

var entity = new class {
    constructor(name) { this.name = name; }
    getName() { return this.name; }
}('Foo');
console.log(entity.getName()); // Foo

它背后的工作是什么,它将带来什么优势以及它也会带来什么警告?


问题答案:

匿名类实例-这是一个坏主意吗?

每次评估表达式时,这种书写风格都会导致创建新的构造函数和原型对象。如果使用这种方法创建多个对象,则它们将不会获得类/原型的任何好处。

如果您打算使用此模式创建单例对象,那么您也会失败。构造函数仍然可以创建,甚至可以访问-使用可以轻松创建第二个实例new entity.constructor,从而破坏了整个目的。

所以 永远不要使用它 。一个简单的对象文字更容易编写,读取和实例化:

var entity = {
    name: 'Foo',
    getName() { return this.name; }
};
console.log(entity.name); // Foo

不要被这种new class模式很常见的其他语言所欺骗,它与JavaScript的工作方式大不相同。



 类似资料:
  • 在ES6中我们可以做匿名类: 但我们也可以将其实例化: 它背后做了什么,它会带来什么优势,也会带来什么警告?

  • 本文向大家介绍Java匿名类,匿名内部类实例分析,包括了Java匿名类,匿名内部类实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Java匿名类,匿名内部类。分享给大家供大家参考,具体如下: 内部类 匿名类  首发日期 :2018-03-25 内部类: 在一个类中定义另一个类,这样定义的类称为内部类。【包含内部类的类可以称为内部类的外部类】 如果想要通过一个类来使用另一个类,可以定

  • 问题内容: 似乎我在某处听到/读到了a的内部禁忌。并不是说它不起作用,只是基于它们的显示类型,关于它们的兼容性不佳。找不到任何证据来支持我的预感,所以我可能完全错了。 问题答案: 使用实例a 并不比使用表进行布局的任何其他方式差。(尽管有些人从不使用表格进行布局,而我恰好是其中之一。) 如果您使用的,你会得到但在一种情况,它可能是很难预测的因素将如何调整大小。div的默认值是从其父对象确定其宽度,

  • 问题内容: 这是一个例子 这仅仅是匿名内部类的变体,还是完全其他? 问题答案: 是的,这是一个匿名内部类

  • 在以下片段中: 有没有办法从内部匿名类引用匿名类的外部实例? 第二个错误是在解决方案上,我在这里找到了一个匿名内部类的外部类的关键字。这些问题似乎共享一些概念和问题空间,但性质不同。

  • 我正在考虑写一些代码,可以归结为以下几点是一种集合类型(当前为,如果有必要的话)。 我的问题是,像这样把复制到是不是一个坏主意?糟糕的风格?可能会惹恼某个学究?根据类型的细微细节是否可能中断? 我不希望在这个循环运行时被破坏,也不希望任何元素被添加或删除。 一方面,我对迭代器的了解表明,这应该是完全安全的。但另一方面,我对迭代器有些不了解,这感觉有点粗略,所以我想问一下。 增编: 出现这种情况的另