一、js代码形式
(1)自执行函数一:
!function(arr){
}([
function a(){},
function b(){},
function c(){},
// ... 一系列函数
function z(){}
])
执行示例
!function(arr){
function useModule(whichModule) {
// 利用 call 或 apply 调用函数
arr[whichModule].call(null, "hello world!");
}
// 加载并运行了下面数组中的第1个函数
useModule(0)
}([
function a(param){console.log("1",param)},
function b(){console.log("2")},
function c(){console.log("3")},
// ... 一系列函数
function z(){console.log("4")}
])
(2)自执行函数二:
!function(obj){
}({
a: function(){},
b: function(){},
c: function(){},
// ... 一系列函数
z: function(){}
})
执行示例
!function(abj){
//函数加载器
function useModule(whichModule) {
// 利用 call 或 apply 调用函数
abj[whichModule].call(null, "hello world!");
}
// 加载并运行了下面数组中的第1个函数
useModule("a")
useModule(3)
}({
a: function(param){console.log("a",param)},
b: function(){},
3: function(param){console.log(3,param)},
// ... 一系列函数
z: function(){}
})
二、如何扣代码
先把自执行函数 、函数加载器 先扣下来,再扣 函数集。其他不相干代码不用扣
三、进阶js扣代码
var result;
!function () {
var __webpack_modules__ = {
111:function (e,t,n) {
console.log("我是函数",111)
function func(){
result = "加密函数"
console.log('我是函数111的函数abc')
};
func();
n(222);
},
222:function (e,t,n) {
console.log("我是函数",222)
n(333);
},
333:function (e,t,n) {
console.log("我是函数",333)
}
}
,__webpack_module_cache__ = {};
function __webpack_require__(e) {
// console.log(__webpack_modules__[e])
var t = __webpack_module_cache__[e];
if (void 0 !== t)
return t.exports;
var n = __webpack_module_cache__[e] = {
id: e,
loaded: !1,
exports: {}
};
return __webpack_modules__[e](n, n.exports, __webpack_require__),
n.loaded = !0,
n.exports
}
__webpack_require__.n = function(e) {
var t = e && e.__esModule ? function() {
return e.default
}
: function() {
return e
}
;
return __webpack_require__.d(t, {
a: t
}),
t
}
,
__webpack_require__.d = function(e, t) {
for (var n in t)
__webpack_require__.o(t, n) && !__webpack_require__.o(e, n) && Object.defineProperty(e, n, {
enumerable: !0,
get: t[n]
})
}
,
__webpack_require__.g = function() {
if ("object" == typeof globalThis)
return globalThis;
try {
return this || new Function("return this")()
} catch (e) {
if ("object" == typeof window)
return window
}
}(),
__webpack_require__.o = function(e, t) {
return Object.prototype.hasOwnProperty.call(e, t)
}
,
__webpack_require__.r = function(e) {
"undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {
value: "Module"
}),
Object.defineProperty(e, "__esModule", {
value: !0
})
}
,
__webpack_require__.nmd = function(e) {
return e.paths = [],
e.children || (e.children = []),
e
}
__webpack_require__(111);
}();
console.log(result);