tem*_*ame 3 javascript underscore.js
这是从注释的_.js源开始.尽管我可以尝试,但我的JavaScript能力还不够高,无法理解这里发生了什么.我希望有人能给出真正的一步一步的解释.我真的不知道下面的代码除了以某种方式设置_使用之外还做了什么,尽管我理解每个单独的表达.
var _ = function(obj) {
if (obj instanceof _) return obj;
if (!(this instanceof _)) return new _(obj);
this._wrapped = obj;
};
if (typeof exports !== 'undefined') {
if (typeof module !== 'undefined' && module.exports) {
exports = module.exports = _;
}
exports._ = _;
} else {
root._ = _;
}
Run Code Online (Sandbox Code Playgroud)
var _ = function(obj) {
// Either serve as the identity function on `_` instances,
// ... or instantiate a new `_` object for other input.
// If an `_` instance was passed, return it.
if (obj instanceof _) return obj;
// If someone called `_(...)`, rather than `new _(...)`,
// ... return `new _(...)` to instantiate an instance.
if (!(this instanceof _)) return new _(obj);
// If we are instantiating a new `_` object with an underlying,
// ... object, set that object to the `_wrapped` property.
this._wrapped = obj;
};
// If there is an exports value (for modularity)...
if (typeof exports !== 'undefined') {
// If we're in Node.js with module.exports...
if (typeof module !== 'undefined' && module.exports) {
// Set the export to `_`
exports = module.exports = _;
}
// Export `_` as `_`
exports._ = _;
} else {
// Otherwise, set `_` on the global object, as set at the beginning
// ... via `(function(){ var root = this; /* ... */ }())`
root._ = _;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
770 次 |
| 最近记录: |