我正在瀏覽一個爲JavaScript創建多平臺包管理和模塊系統的代碼庫。這段代碼中發生了什麼,以及沒有「with」關鍵字的基本實現將會是什麼
我找到了一個代碼的路徑,該代碼是從與「exports」變量關聯的函數中提取的。 我附上了下面的代碼片段,並且在運行代碼片段時,您會發現從該函數中提取「print」對象。 我想知道兩件事: -
- 此代碼是如何工作的?
- 如果沒有with語句,這個代碼可以以更簡單的方式實現嗎?
var context = {
exports: {}
};
var fn = (function(args) {
with(args) {
return function logger() {
exports = {
print: function(res) {
console.log(res);
}
}
}
}
});
fn = fn(context);
fn.call();
context.exports.print('hello World'); //Prints the hello world
'eval' and'with'。一個腳本中JavaScript的兩個*最佳部分*。 – epascarello
在你問「代碼是如何工作的」之前,你應該問「代碼應該做什麼」? – 2016-01-21 04:23:53