【发布时间】:2014-06-04 17:56:02
【问题描述】:
我有 been watching this video 达米安说 Crockford 称之为:“超级构造器模式”
代码示例:(来自视频)
var signalR;
signalR = function (url){
return new signalR.prototype.init(url);
}
signalR.prototype={
init:function(url)
{
this.url=url;
}
}
signalR.prototype.init.prototype = signalR.prototype;
现在,我用谷歌搜索了 Crockford 和超级构造函数但我只能找到 Object.create 的实现:
我理解得很清楚:(也是陷阱)
function create(o)
{
function f(){};
f.prototype=o;
return new f();
}
但我仍然不明白它是如何关联的:
问题:
- 究竟是什么(在视频中) - 他是否尝试使用这种模式来解决问题? (也非常感谢小代码示例)。
【问题讨论】:
-
此模式唯一启用的是您可以在没有
new的情况下调用signalR。另见stackoverflow.com/questions/15591434/… -
@Bergi 我相信还有一些东西:例如 - 他实例化了 init 方法。所以init是ctor函数.....你确定这是唯一的吗?如果您将其转换为答案,也将不胜感激。(附注:链接有点真实,但不是 100%,因为这里,正如我所说,他将 init 作为 ctor 函数处理)
-
是的,他使用
init作为构造函数,这是一个糟糕的模式。 -
@Bergi 请我在这里学习。你能告诉我为什么这么可怕吗?或者您能否提供一个描述此确切模式的链接?
-
有时作为一种模式(谁会使用
new jQuery()而不仅仅是$()?),有时只是为了在有人忘记在构造函数调用前添加new时发现错误。 This also seeming to be the reason why Crockford dislikesnew.
标签: javascript signalr