Javascript 为什么要删除window.self?

Javascript 为什么要删除window.self?,javascript,browser,sails.js,Javascript,Browser,Sails.js,我正在检查sails.js的ejs布局代码,看到一行写着delete window.self <% /* Delete the global `self` to help avoid client-side bugs. (see https://developer.mozilla.org/en-US/docs/Web/API/Window/self) */ %> <script>delete window.self;</script> 删除window.

我正在检查sails.js的ejs布局代码,看到一行写着
delete window.self

<% /* Delete the global `self` to help avoid client-side bugs.
(see https://developer.mozilla.org/en-US/docs/Web/API/Window/self) */ %>

<script>delete window.self;</script>

删除window.self;
我尝试搜索以找到我们为什么要删除window.self的答案,但找不到答案。增加这一行的理由是什么

编辑:
代码存在于第137行:

对我来说唯一有意义的解释是:

通常的做法是存储
self
参考:

 var self = this;
onSomething(function() {
  self.doSomething();
});
现在假设有人忘记了第一行,那么
self.doSomething()
会说“doSomething”不是一个肯定是错误引导的函数。如果
window.self
被删除,它会说
self
没有定义,这会更有帮助


。。。但是,最好不要在这里给它命名为self…

唯一对我有意义的解释是:

通常的做法是存储
self
参考:

 var self = this;
onSomething(function() {
  self.doSomething();
});
现在假设有人忘记了第一行,那么
self.doSomething()
会说“doSomething”不是一个肯定是错误引导的函数。如果
window.self
被删除,它会说
self
没有定义,这会更有帮助


。。。不过,最好不要在这里给它命名。
self
。如果没人知道,也许问问是谁加的那句话?(这听起来不是一件正常的好事)如果我不得不猜测这是为了“帮助避免客户端错误”。还有一个附加的链接进一步解释它。。。不确定客户端的bug是什么,但很可能与浏览器如何支持self有关。@matthew。。。但是那个链接是死的,并没有包含任何关于它为什么不好的暗示。那个链接是活的,很好,你们的链接甚至直接链接回它,哈哈。虽然它没有明确说明它为什么不好,但它指出window.self和window是可以互换的。从这里,您可以得到当前顶级答案的逻辑,即变量是无意义的,并且阻塞了全局名称空间。如果没人知道,也许问问是谁加的那句话?(这听起来不是一件正常的好事)如果我不得不猜测这是为了“帮助避免客户端错误”。还有一个附加的链接进一步解释它。。。不确定客户端的bug是什么,但很可能与浏览器如何支持self有关。@matthew。。。但是那个链接是死的,并没有包含任何关于它为什么不好的暗示。那个链接是活的,很好,你们的链接甚至直接链接回它,哈哈。虽然它没有明确说明它为什么不好,但它指出window.self和window是可以互换的。从那里你可以得到当前最重要答案的逻辑,这就是变量是无意义的,并且阻塞了全局名称空间。请查看以下代码中的第137行:或者使用更现代的做法,例如传递箭头函数并允许transpiler使其向后兼容…您可以查看代码中第137行中的参考吗:或者使用更现代的方法传递箭头函数和允许transpiler使其向后兼容等实践……请查看代码第137行中的参考: