Javascript OOP – 奇怪的构造函数

Javascript OOP – strange constructor

今天我发现了一个我无法解决的练习...Google 没有帮助。 你能告诉我在哪里可以找到解决方案吗?

a = new Pepper, b = new Pepper;

制作方法:

a === b
true

new Pepper 和 new Pepper() 有什么区别?我不明白...

不可能使两个不同的对象与 === 比较相等。 new Peppernew Pepper()没有区别,但是当你两次调用构造函数时,它会构造两个对象。请注意 {} === {} 也是 false.

首先new Pepper()new Pepper除了最后一个会伤到你的感情外,没有什么区别。感谢 Douglas Crockford 如果你明白我的意思。

如何制作a === bSingleton 就是答案。看看这个:

function Pepper () {
 if (Pepper.instance) {
  return Pepper.instance
 }
 Pepper.instance = this;
}
a = new Pepper, b = new Pepper;
a === b 

这里是jsfiddle

如果您想了解更多关于单例的信息,请阅读:Learning JavaScript Design Patterns