我想使用arguments
在日志记录功能中创建angular.copy()
的副本。
由于arguments
已经是一个数组,我希望得到一个数组,但它返回的是Object而不是Array。
$scope.log = function(argN) {
console.log("arguments", arguments, angular.copy(arguments));
if (typeof(console) !== 'undefined') {
console.log.apply(console, angular.copy(arguments));
}
}
答案 0 :(得分:2)
arguments
不是数组,而是数组。要对arguments
进行浅层克隆,请使用Array.prototype.slice.call(arguments)
。这将创建一个包含所有参数的数组。从那里,要获得深度克隆,请使用angular.copy
。
var foo = angular.module('foo', []);
foo.controller('bar', function($scope) {
$scope.trace = function() {
var clonedArguments = angular.copy(arguments);
console.log(clonedArguments);
var clonedArgs = angular.copy(Array.prototype.slice.call(arguments));
console.log(clonedArgs);
};
$scope.trace(1, 'foo', { bar: 27 })
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="foo" ng-controller="bar"></div>
答案 1 :(得分:0)
编辑:我认为console.dir()
可能是您在阅读本文后想要的内容