看到一篇关于javascript单例的文章 http://blog.crazycoder.cc/post/13
对javascript new运算有些思考:
情况1:
function test1(){
return {name:‘test1‘};
};
new test1的结果:{name:‘test1‘}
情况2:
function test2(){
};
test2.prototype={name:‘test2‘};
new test2 的结果:{name:‘test2‘}
情况3:
function test3(){
return {name:‘test3-1‘};
};
test3.prototype={name:‘test3-2‘};
new test3 的结果:{name:‘test3-1‘}
情况4:
function test4(){
return ‘test4‘;
};
new test4 的结果:{}
情况5:
function test5(){
return [];
};
new test5 的结果:[];
情况6:
function test6(){
return function(){ return ‘test6‘};
};
new test6 结果:function(){ return ‘test6‘};
结论:
与java不同,javascript的new运算是有返回值的,返回值可以是对象、数组、函数,若返回值类型不符合要求,则返回原型的浅克隆,否则返回返回值对象。
疑问:
原文中
//构造函数指针 instance.constructor = Singleton; 这行去掉似乎也是正确的...
时间: 2024-10-06 09:14:41