我正在查看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
答案 0 :(得分:5)
对我来说唯一有意义的解释是:
对于access the correct "this" inside a callback,通常的做法是存储一个self
引用:
var self = this;
onSomething(function() {
self.doSomething();
});
现在假设有人忘记了第一行,那么self.doSomething()
会说“ doSomething”不是一个肯定会引起误解的函数。如果window.self
被删除,则会说self
未定义,这会更有帮助。
...但是最好不要在此处命名为self
...