Javascript 带有{}的单态模式?
我很抱歉把它从这里移走 有一些混乱和感谢 灰色为回答此问题实现了 错误该主题已移至 进一步讨论 带有“{}”的单例模式。这是怎么回事:Javascript 带有{}的单态模式?,javascript,unobtrusive-javascript,Javascript,Unobtrusive Javascript,我很抱歉把它从这里移走 有一些混乱和感谢 灰色为回答此问题实现了 错误该主题已移至 进一步讨论 带有“{}”的单例模式。这是怎么回事: var A = { B : 0 }; // A is an object? document.write("A is an " + typeof A); 让我们尝试克隆对象A var objectOfA = new Object(A); objectOfA.B = 1; //Such operation is not allowed! //var obj
var A = {
B : 0
};
// A is an object?
document.write("A is an " + typeof A);
让我们尝试克隆对象A
var objectOfA = new Object(A);
objectOfA.B = 1;
//Such operation is not allowed!
//var objectOfA = new A();
var referenceOfA = A;
referenceOfA.B = -1;
document.write("A.B: " + A.B);
document.write("<br/>");
如果成功克隆,则objectOfA
应保留值1
document.write("objectOfA.B: " + objectOfA.B);
document.write("<br/>");
document.write(“objectOfA.B:+objectOfA.B”);
文件。写(“
”);
以下是结果:
A是一个物体
A.B:-1
参考FA.B:-1
A.B:-1
到目前为止,一切都很清楚,但对象应该具有instanceof
。但在这里,如果您尝试将instanceof
与A
一起使用,则会出现异常
为什么?我没有例外:
alert(A instanceof Object); // true
在Chrome、IE8和Firefox中测试。意识到我完全误解了。在一种带有全局变量的语言中,“单例模式”有什么意义?我问的是真实的,为什么不说
var B=0
?全局变量可以用闭包控制。一个非常强大的功能。这里有一篇关于闭包概念的好文章:我在推a的referenceOfA实例,在那里抛出了异常<但是,code>referenceOfA instanceof Object
返回true。
alert(A instanceof Object); // true