我正在分析angular-file-upload
插件的一些角度js源代码,我在尝试理解某些代码时遇到了一些问题。
我知道export
是新ES6标准的一部分,它用于从给定文件(或模块)中导出函数和对象。
但是下面的语法有点奇怪:
let {
copy,
extend,
forEach,
isObject,
isNumber,
isDefined,
isArray,
element
} = angular;
export default (fileUploaderOptions, $rootScope, $http, $window,
FileLikeObject, FileItem) => {
let {
File,
FormData
} = $window;
class FileUploader {
// class implemention....
}
return FileUploader;
}
此声明中=>
运算符的用途是什么?
答案 0 :(得分:16)
这是arrow function(或胖箭头功能):
(a, b, c) => { /* ... */ }
(几乎)等同于:
function(a, b, c) { /* ... */ }
箭头函数和用function
声明的函数之间的唯一区别是this
在箭头函数中具有词法绑定,而不是常规函数中混淆的混乱。
答案 1 :(得分:1)
它是ES6 arrow function。在你的情况下,它可以解释为:
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var _angular = angular;
var copy = _angular.copy;
var extend = _angular.extend;
var forEach = _angular.forEach;
var isObject = _angular.isObject;
var isNumber = _angular.isNumber;
var isDefined = _angular.isDefined;
var isArray = _angular.isArray;
var element = _angular.element;
exports["default"] = function (fileUploaderOptions, $rootScope, $http, $window, FileLikeObject, FileItem) {
var File = $window.File;
var FormData = $window.FormData;
var FileUploader = function FileUploader() {
_classCallCheck(this, FileUploader);
};
// class implemention....
return FileUploader;
};
module.exports = exports["default"];
请注意,这是由Babel编译的。