向$ scope添加函数是否有一个主要的性能优势,不需要在$ scope上?
示例:
function myCtrl($scope){
$scope.myFunc = function(){
// my function on scope
var four = myHelperFunc(2);
return four;
}
function myHelperFunc(number){
// my helper function
return number * 2;
}
}
与
function myCtrl($scope){
$scope.myFunc = function(){
// my function on scope
var four = $scope.myHelperFunc(2);
return four;
}
$scope.myHelperFunc = function(number){
// my helper function on scope
// is this better than the previous example?
return number * 2;
}
}
答案 0 :(得分:2)
第一个更好,它将使用词法范围。第二个将使用堆上的对象状态内存。随着对象数量的增加,您将消耗更多内存以保留引用$scope.myHelperFunc
。
总而言之,我建议不要担心这一点,最好编写表达你正在做的事情的干净代码。在这个例子中,性能差异实际上是最小的,它取决于客户端实际供应商的JS引擎实现,而您无法真正控制。除非......它是服务器端代码。
答案 1 :(得分:0)
后者没有性能优势。最后,仍然会调用一个函数。不同之处在于您是否希望能够从UI调用辅助函数。在$ scope上,你可以编写一个调用它,在你控制访问的控制器内,只从你的函数调用它。它更像是API可见性问题,而不是性能问题。