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

这两种构造器模式有什么区别?

慎旭尧
2023-03-14
问题内容
Function ConstrA () {
    EventEmitter.call(this);
}
util.inherits(ConstrA, EventEmitter);

Function ConstrA() {}
util.inherits(ConstrA, EventEmitter);

是否有EventEmitter.call(this)所需的功能?


问题答案:

是否有EventEmitter.call(this)所需的功能?

显然,是的:

function EventEmitter() {
  EventEmitter.init.call(this);
}
…

EventEmitter.init = function() {
  this.domain = null;
  if (EventEmitter.usingDomains) {
    // if there is an active domain, then attach to it.
    domain = domain || require('domain');
    if (domain.active && !(this instanceof domain.Domain)) {
      this.domain = domain.active;
    }
  }
  this._events = this._events || {};
  this._maxListeners = this._maxListeners || undefined;
};

由于所有使用的方法都会._events检查其是否存在,因此,如果您忽略了调用,我希望不会有太大的改变,但是我不确定将来是否成立。

有迹象表明,做足够多的其他构造 容忍被省略,所以这是很好的做法,只是 始终 构造一个实例时调用构造函数。



 类似资料:
  • 问题内容: 我试图在Web应用程序中验证公司名称,并且使用此正则表达式模式 上述模式将拒绝值 10004 Estates Limited 但是如果我提出0-9,那么模式变成 然后就可以了。正则表达式和模式是新手,但我知道我应该使用更多它,因此我想对此进行澄清。谢谢。 问题答案: 是字符类中的一个特殊字符,因此是歧义的,可能会赋予和和含义,因此本质上是字符。 要在字符类中包含连字符减号,您必须将其转

  • 此行不显示可能的有损转换,而 上面的一行显示错误。有什么原因吗?

  • 本文向大家介绍这两种展开运算符的方式有什么区别呢?相关面试题,主要包含被问及这两种展开运算符的方式有什么区别呢?时的应答技巧和注意事项,需要的朋友参考一下 本题在于考察展开运算符...属于浅拷贝 function Super(val) { this.value = val || 'init' } Super.prototype.getTxt = function () { console.log(

  • 这个答案几乎描述了问题的前半部分。 上面写着: 看过“四人帮”的定义后,我不相信这有什么真正的区别。(为方便起见包括在内) 装饰器:允许对对象进行动态包装,以便修改它们现有的职责和行为 责任链:通过将接收对象链接在一起,使多个对象有机会处理请求 维基百科对它们做了一些补充,但有些是武断的。 > 装饰器通常作为链表实现。但我认为这太低了,不能被认为是模式的“一部分”。 责任链只处理数据,如果这是他们

  • 在面向对象编程中,构造器是一个当新建对象的内存被分配后,用来初始化该对象的一个特殊函数。在Javascript中几乎所有的东西都是对象,我们经常会对对象的构造器十分感兴趣。 对象构造器是被用来创建特殊类型的对象的,首先它要准备使用的对象,其次在对象初次被创建时,通过接收参数,构造器要用来对成员的属性和方法进行赋值。 对象创建 下面是我们创建对象的三种基本方式: // 下面的每一种都会创建一个新的对

  • Imagine that we want to create an object that is composed of multiple parts and the composition needs to be done step by step. The object is not complete unless all its parts are fully created. That's