【问题标题】:Javascript this.superclass.constructor() and extend()Javascript this.superclass.constructor() 和 extend()
【发布时间】:2013-10-25 08:11:00
【问题描述】:

这些代码摘自《Learning Javascript Design Patterns》一书中抽象装饰器的例子。我被this.superclass.constructor()extend() 弄糊涂了。

我可以理解this指的是myMacbookPro,这里是CaseDecorator的一个实例。但是this.superclass 指的是什么?为什么不只是this.constructor(macbook)

CaseDecorator 的超类是MacbookDecorator?继承发生在哪里? 它们是原生 Javascript 还是第三方库的一部分?

谢谢

var CaseDecorator = function(macbook) {
    // call the superclass's constructor next
    this.superclass.constructor(macbook);
};

// Let's now extend the superclass
extend(CaseDecorator, MacbookDecorator); 
....
// Decorate the macbook
myMacbookPro = new CaseDecorator(myMacbookPro);

【问题讨论】:

  • this.superclass.constructor() 正在获取this 的属性superclass,获取其构造函数并调用它。它都没有内置在 JavaScript 中。有点讨厌的模式,这个。
  • minitech,我理解你所说的一般。但是我迷失了这个例子中的具体对象。

标签: javascript inheritance extend superclass


【解决方案1】:

Extend 接受两个对象,并将它们组合起来。如果您有两个相同的属性,但其中一个对象具有第三个属性,则最终对象具有三个属性。示例:

var object1 = { name: "Test1", sex: "male" };
var object 2 = { job: "Worker" }

var extendedObject = $.extend(object1, object2);

扩展对象将是:

objectExtended = { name: "Test", sex: "male", job: "Worker" }

【讨论】:

  • 这似乎是 jQuery。问题的extend 似乎不是 jQuery。
猜你喜欢
  • 2011-04-16
  • 2018-10-14
  • 2020-05-22
  • 2011-11-22
  • 2016-01-16
  • 1970-01-01
  • 2013-05-15
  • 1970-01-01
  • 2017-11-23
相关资源
最近更新 更多