【发布时间】:2016-03-10 19:06:28
【问题描述】:
我已经使用 Angularjs 工作了几个月,我想知道如何使用这个框架实现高效的 OOP。
我正在一个项目中工作,我需要实例化一个“终端”类,该类具有构造函数属性和一系列方法(作为普通类)。在普通 JS 中,我会使用伪经典模式(将构造函数属性与原型链中的方法分开)。
根据我对 Angularjs 的了解,model.service() 将是最佳选择,因为我每次调用它时都会创建一个新的服务实例。但是在定义方法时,我通常会看到下一个实现:
myApp.service('helloWorldFromService', function() {
this.sayHello = function() {
return "Hello, World!"
};
});
但是,它不会在我每次调用类时创建函数 sayHello() 吗?我想知道将功能分开是否会更好,例如:
myApp.service('helloWorldFromService', function() {
this.msg= "Hello, World!";
});
helloWorldFromService.prototype.showMessage = function() {
return this.msg;
};
这样,函数 showMessage() 将只在内存中创建一次,并在创建的服务的所有实例之间共享。
另外,如果这是可能的(并且如果它确实使代码更高效),那么实现它的方法是什么? (上面的代码只是一个猜测)
谢谢
【问题讨论】:
-
“每次我打电话给班级” ...不,服务是单例的。要执行第二个版本,您需要将命名函数引用传递给服务而不是匿名函数
-
你说得对,我不太了解服务的目的。看看我对 rob 的回答的评论
标签: javascript angularjs oop angularjs-service