首页 > 解决方案 > 为什么我们要删除window.self?

问题描述

我正在检查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 但找不到答案。添加这条线的原因是什么?

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

标签: javascriptbrowsersails.js

解决方案


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

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

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

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

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


推荐阅读