为什么我们删除window.self?

Mas*_*ade -1 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>
Run Code Online (Sandbox Code Playgroud)

我试图找到一个答案为什么我们会删除window.self但是找不到答案.添加此行的理由是什么?

编辑:代码存在于行号.137这里:https://github.com/mikermcneil/ration/blob/master/views/layouts/layout.ejs

Jon*_*lms 5

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

在回调中访问正确的"this",通常的做法是存储self引用:

 var self = this;
onSomething(function() {
  self.doSomething();
});
Run Code Online (Sandbox Code Playgroud)

现在想象有人忘记了第一行,然后self.doSomething()会说"doSomething"不是一个肯定会误导的功能.如果window.self被删除它会说self没有定义,这更有帮助.

......但是最好不要self在这里命名......