backbone.js的开头是:
//Establish the root object, `window` (`self`) in the browser, or `global` on the server.
//We use `self` instead of `window` for `WebWorker` support.
var root = (typeof self == 'object' && self.self == self && self) ||
(typeof global == 'object' && global.global == global && global); self.self == self是用来做什么的?什么时候它会是假的?
global.global == global也是如此。
发布于 2015-10-20 00:19:28
function Mistake(x);
self = this;
x.on("event", function() {
console.log(self);
});
}
new Mistake(…);你发现了吗?现在我们得到了一个不是backbone所期望的self的全局self。因此,它检查self是否实际上是全局对象,当self是一个对象,并且该对象将“全局变量”self作为指向对象本身的属性时,很可能会出现这种情况。
global也是如此。
发布于 2019-08-12 16:05:07
我相信这篇文章回答了这个问题。
The Global Object in Various JS Environments
简而言之:
typeof self === 'object' && self.self === self && self在浏览器环境中检测全局对象,同时支持在time.typeof global === 'object' && global.global === global && global中运行的代码在服务器上检测全局对象(例如,Node.js).this作为后备,以添加对在Node.js vm模块中运行的代码的支持。发布于 2015-10-19 23:57:33
我认为here你至少可以找到部分解释。
https://stackoverflow.com/questions/33181929
复制相似问题