Angularjs 如何删除附加到scope和rootscope而不是函数的所有变量

Angularjs 如何删除附加到scope和rootscope而不是函数的所有变量,angularjs,Angularjs,我试过这个: for (var prop in $rootScope) { console.log($rootScope[prop]) if (prop.substring(0,1) !== '$') { delete $rootScope[prop]; } console.log($rootScope[prop]) } for (var prop in $scope) { console.log($scope[prop]) if (pr

我试过这个:

for (var prop in $rootScope) {
  console.log($rootScope[prop])
    if (prop.substring(0,1) !== '$') {
        delete $rootScope[prop];
    }
    console.log($rootScope[prop])
}

for (var prop in $scope) {
  console.log($scope[prop])
    if (prop.substring(0,1) !== '$') {
        delete $scope[prop];
    }
  console.log($scope[prop])
}
但我最终删除了所有附加到scope的变量和函数。我希望能够删除所有变量/数据,而不是函数,因为我必须处理大量数据,这会减慢我的应用程序


此外,请务必说明是否有其他方法来处理此类问题。

使用
typeof
运算符检查属性是否不是函数。您还应该检查角度
$
前缀变量,例如
$$destromed
$$isolateBindings
等。这只返回(据我所测试的)用户定义的变量(=您分配给
$scope
的变量,仅此而已):


为什么不创建一个或多个状态对象并将它们附加到
$rootScope
上,然后删除它们或将它们设置为
{}
,而不必遍历所有作用域属性?此外,我会考虑使用服务/工厂来维护状态,并允许他们相应地清理自己。嘿,DuStWistar,听起来很有趣。但这几乎是新的。你能给我举个例子吗?没有复制粘贴的意图,但希望了解更多信息。我还将添加“hasOwnProperty”检查,以限制属性搜索条件。
for (var prop in $scope) {
   if (typeof $scope[prop] !== 'function' && 
       prop.indexOf('$') == -1 && 
       prop.indexOf('$$') == -1) {

      //delete here 

   }
}