首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >constructor.constructor()()在JavaScript中是什么?

constructor.constructor()()在JavaScript中是什么?
EN

Stack Overflow用户
提问于 2022-04-06 15:29:22
回答 1查看 280关注 0票数 1

我正在h1上搜索bug,我找到了一种在使用Angularjs、Nodejs和其他JavaScript库的站点上使用constructor.constructor()触发警报框的方法,我希望真正了解这里发生了什么,但还没有找到确切的信息。

确切的有效载荷是

constructor.constructor(“警报(1)”)()

我只找到了一些关于构造函数的信息,比如在定义函数和类的过程中,而不是作为一个“函数”(不太确定这在这个上下文中是什么)。我也不确定触发警报框的上下文是已经到位的库之一,还是仅仅因为JavaScript和DOM。

有人知道constructor.constructor()()是什么吗?它是如何工作的呢?

PS:有效载荷也放置在{{ }内,但显然它只是JavaScript,而不是一个实际的SSTI ( DOM解析了7*7,但仍保留在源代码中)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-06 15:44:16

对象实例具有对其构造函数的引用:

代码语言:javascript
复制
const o = {};
o.constructor === Object;

如果不引用任何对象,则在window实例的全局上下文中执行属性,这与window.constructor相同

代码语言:javascript
复制
constructor /* or window.constructor */ === Window;

WindowObject是函数实例,因为函数也是JavaScript中的对象,这意味着构造函数是Function

代码语言:javascript
复制
constructor.constructor /* or Window.constructor */ === Function;

Function函数可以使用字符串输入作为函数体来创建函数实例--类似于传入'alert(1)'的示例中的eval-so,结果是一个在执行时调用alert(1)的函数:

代码语言:javascript
复制
Function('alert(1)');
// is the same as
function () {
  alert(1);
}

最后,最后一个括号在没有任何参数的情况下执行函数,这就是使用1显示警报的原因。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71769586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档