JavaScript   发布时间:2022-04-16  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Javascript实用程序函数将类 – “构造函数”转换为Singleton大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我有一些关于在javascript中创建单例的方法的阅读 – 简单的对象文字方式和另一种带有闭包技术的方法,如果我们想要使用私有变量.

我正在寻找创建一个实用功能,例如

无论什么类 – “构造函数”我在这里作为参数传递,Singleton方法将此类转换为Singleton对象,在调用新的Classname()后PLUS如果有人再次触发新的classname()他/她得到一些新的错误(“已经实例化一次,这是Singleton“);

使用案例如下 –

function Circle() {this.name = "Circle";}
SingleTon(Circle);
var circle1 = new Circle(); // returns the circle instance
var circle2 = new Circle(); // throws Error "Already instantiated once,this is Singleton"

我只想在这里定义“Singleton”方法.

我已经看到类似的例子,其中getInstance方法用于获取实例,如Singleton.getInstance(Circle)等,但我正在寻找上面的特定问题,其他程序员习惯以“新”方式创建实例fire new Circle();第二次在他的代码中某处并收到错误.

以这种方式创建单例是一个问题,但主要问题是抛出“错误”,据我所知,Circle构造函数需要在Singleton函数中的某处修改,不知道如何实现这一点.

有什么解决方案吗?

提前致谢 !!

最佳答案
function Singleton(param){
    var count = 0,old = window[param];
    window[param] = function(){
         if(++count <= 1) return old;
         else alert('NO WAY!'); 
    }
}

你会称之为:

Singleton('Circle');

演示:http://jsfiddle.net/maniator/7ZFmE/

请记住,仅当Circle或任何其他函数类位于全局窗口命名空间中时,此方法才有效.任何其他命名空间中的任何内容都需要更多操作才能使其完全正常工作.

大佬总结

以上是大佬教程为你收集整理的Javascript实用程序函数将类 – “构造函数”转换为Singleton全部内容,希望文章能够帮你解决Javascript实用程序函数将类 – “构造函数”转换为Singleton所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: