javascript - 为什么我们要删除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
解决方案
对我来说唯一有意义的解释是:
要在回调中访问正确的“this”,通常的做法是存储self
引用:
var self = this;
onSomething(function() {
self.doSomething();
});
现在假设有人忘记了第一行,然后self.doSomething()
会说“doSomething”不是一个肯定会误导的函数。如果window.self
被删除,它会说self
未定义,这更有帮助。
...但是最好不要self
在这里命名...
推荐阅读
- javascript - 使用 Javascript 设置元素的宽度会产生意想不到的结果
- typescript - TypeScript 将对象转换为另一个对象,仍然具有原始类型的属性
- php - 修改 php.ini 后无法访问 Phpadmin?
- ruby-on-rails - 在一篇 json 帖子中更新 rails 中的多个表
- python - 拆分字符串并制作键值对
- php - mysqli_num_rows() 期望参数 1 为 mysqli_result,mysqli 的布尔值
- mysql - 如何在其他带有 LEFT JOIN 的 SELECT 查询中包含 SELECT 查询
- php - SSL 错误:安全连接失败
- android - Gradle Flavor 明智地更改 packageName 和 applicationId
- windows - Strawberry Perl:无法构建 Tcl 模块