为什么我们要删除window.self?

时间:2018-12-25 18:23:55

标签: 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.self但找不到答案。添加此行的依据是什么?

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

1 个答案:

答案 0 :(得分:5)

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

对于access the correct "this" inside a callback,通常的做法是存储一个self引用:

 var self = this;
onSomething(function() {
  self.doSomething();
});

现在假设有人忘记了第一行,那么self.doSomething()会说“ doSomething”不是一个肯定会引起误解的函数。如果window.self被删除,则会说self未定义,这会更有帮助。

...但是最好不要在此处命名为self ...