JS单例模式

JavaScript020

JS单例模式,第1张

在面向对象语言中,调用一个类的方法之前,必须先将这个类实例化,才能调用类方法。

单例模式能使得我们不需要每次都需要实例化一次,因为我们使用的对象都是同一个对象。

单例模式:只允许实例化一次的对象类。

Leader返回一个包含getInstance方法的对象,执行这个方法可以获得_module的实例。

eader_01与leader_02完全相等,说明它们是同一个对象,并不是通过new新获取的对象。

但是在多页面情况下,通过import引入的并不是单例模式,因为

模态框弹窗的时候,不希望有两个弹窗

服务的本质是一个单例对象,既然是一个js对象,那么它肯定有属性和方法。

当我们把服务注入到控制器中时,我们就可以调用服务,也就是一个js对象的属性和方法了。

这样理解起来是不是很简单,所谓地调用一个服务,其实就是使用一个js对象的属性或方法。

最常见的注册服务的方法是factory()方法。

factory(name,function(){

return{

}

})

它包含两个参数:

1、name

2、一个函数

name是用来注册这个服务的名称,function中会返回一个对象或者函数。这点是不是和我们指令的注册方法十分相似呢,

是的他们都是用一个name来注册一个指令或者是服务的名称。然后用function返回一个对象。

其实,说白了就是用一个name来表示一个js对象。

然后指令调用指令这个js这个对象的时候,用的是html中的标签来调用。而调用服务这个js对象时,是在controller中用服务的名字来实现服务的调用。

我们来看一个controller中调用service的例子:

.controller("myController",function($scope,myService){

$scope.name = "kobe"

$scope.age = 39

alert(myService.serviceName)

myService.serviceMethod()

})

.factory("myService", function(){

return{

serviceName:"testService",

serviceMethod:function()