javascript单例模式的写法和调用方法

 <script type="text/javascript">
            var li=document.getElementsByTagName("li")[0];
            //查找元素ele第几层的父级元素
            function parents(ele,n)
            {
                while(ele &&n)
                {
                    ele=ele.parentElement ? ele.parentElement :ele.parentNode;
                    n--;
                }
                return ele;
            }
           //被调用函数
            function add(n1,n2)
            {
                return n1+n2;
            }
           //单例模式1,闭包样式
            var las=(function(){
                var instance=null;
                function single(){
                    return {
                        publicMethod:add,
                        parents:parents,
                        publicProperty:'1.0'
                    }
                }
                return function(){
                    if(!instance)
                    {
                        instance=single();
                    }
                    return instance;
                }
            })();

	//单例模式2,函数表达式样式
            function getSing(f)
            {
                var result;
                function s(){
                    return {
                        method:f,
                    }
                }
                //这里也有个闭包
                return (function(){
                    if(!result)
                    {
                        result=s();
                    }
                    return result;
                })();
            }
			//函数表达示的调用
            var a=new getSing(add);
            console.log(a.method(1,3));
            //闭包样式的调用
            console.log(las().parents(li,2));
            console.log(las().publicMethod(3,2));
        </script>

你可能感兴趣的:(javascript学习日记,javascript,单例模式,前端)