将javascript注入对象函数

杰森

我有一个这样的对象函数:

var batman = function () {
    this.constructor.prototype.go = function(params){
        ......
    }
}

当调用batman.go()时,我正在传递带有一些键的对象,例如:

{
    a:1,
    b:2,
    action:function(){..code to scan and inject into...}
}

我的问题是,如何在batman.go()函数中,扫描“操作”的输入param函数代码,如果找到匹配项,则将代码注入特定位置。

我正在寻找的代码是:

history.pushState({name:'homepage'},null,uri);

我想注入,所以看起来像这样:

history.pushState({id:an_id_variable,name:'homepage'},null,uri);

正在插入的是:

id:an_id_variable
克莱康

使用function.toString()获得的来源params.actionString.replace()查找和替换有问题的片段的出现次数,然后Function()构造函数动态创建与修改源代码的一个新功能:

var batman = function () {
    this.constructor.prototype.go = function(params){
        ...
        let newAction = new Function(params.action.toString().replace(
            /history\.pushState\({name:'homepage'},null,uri\);/g,
            `history.pushState({id:${an_id_variable},name:'homepage'},null,uri);`
        ));
        //use newAction() however you like
    }
}

应当指出,如果任何最终用户对可以输入的内容有任何控制权params.action,这将允许该用户完全随意地注入代码-但正如注释中指出的那样,任意代码已经可以通过浏览器在浏览器上运行开发人员控制台。请注意这种解决方案的安全性。

还要注意,使用Function构造函数会将函数绑定到全局作用域,它将失去任何this上下文。您可以这样将其绑定到适当的this上下文function.bind()

newAction = newAction.bind(params.bindTarget);

然后,当newAction执行时,任何params.bindTarget引用都将是this

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将方法附加到对象与使用Javascript中的函数

来自分类Dev

将初始化的对象传递给javascript函数

来自分类Dev

将属性添加到JavaScript中的函数中的对象?

来自分类Dev

Javascript-将变量存储为对象和函数

来自分类Dev

如何将Structuremap 3与对构造函数注入不友好的对象一起使用?

来自分类Dev

ASP MVC将Array对象发送给JavaScript函数

来自分类Dev

将函数应用于JavaScript数组中的每个对象

来自分类Dev

如何使用构造函数注入创建对象?

来自分类Dev

将函数注入子类

来自分类Dev

JavaScript:将内置对象的方法作为回调函数传递

来自分类Dev

注入需求对象取决于构造函数注入中的条件

来自分类Dev

如何将参数对象绑定到JavaScript中的函数?

来自分类Dev

如何使用JavaScript将数组中的值注入对象?

来自分类Dev

将参数传递给Javascript对象中的函数

来自分类Dev

将JavaScript注入SwiftUI WebKit

来自分类Dev

将属性添加到JavaScript中的函数内部的对象?

来自分类Dev

注入内容的JavaScript函数

来自分类Dev

Javascript-将变量存储为对象和函数

来自分类Dev

JavaFX + Javascript:如何将Java对象注入AMD模块

来自分类Dev

ASP MVC将Array对象发送给JavaScript函数

来自分类Dev

将jQuery注入TypeScript函数

来自分类Dev

将数组对象传递给javascript函数

来自分类Dev

如何将复杂的javascript自运行函数注入android中的webview中?

来自分类Dev

注入需求对象取决于构造函数注入中的条件

来自分类Dev

Angular 2依赖注入-独立于构造函数注入对象

来自分类Dev

将函数插入javascript对象

来自分类Dev

通过生成构造函数将超类注入原始对象

来自分类Dev

使用 Guice 将特定对象注入特定构造函数

来自分类Dev

将 ChangeTracker 注入构造函数

Related 相关文章

  1. 1

    将方法附加到对象与使用Javascript中的函数

  2. 2

    将初始化的对象传递给javascript函数

  3. 3

    将属性添加到JavaScript中的函数中的对象?

  4. 4

    Javascript-将变量存储为对象和函数

  5. 5

    如何将Structuremap 3与对构造函数注入不友好的对象一起使用?

  6. 6

    ASP MVC将Array对象发送给JavaScript函数

  7. 7

    将函数应用于JavaScript数组中的每个对象

  8. 8

    如何使用构造函数注入创建对象?

  9. 9

    将函数注入子类

  10. 10

    JavaScript:将内置对象的方法作为回调函数传递

  11. 11

    注入需求对象取决于构造函数注入中的条件

  12. 12

    如何将参数对象绑定到JavaScript中的函数?

  13. 13

    如何使用JavaScript将数组中的值注入对象?

  14. 14

    将参数传递给Javascript对象中的函数

  15. 15

    将JavaScript注入SwiftUI WebKit

  16. 16

    将属性添加到JavaScript中的函数内部的对象?

  17. 17

    注入内容的JavaScript函数

  18. 18

    Javascript-将变量存储为对象和函数

  19. 19

    JavaFX + Javascript:如何将Java对象注入AMD模块

  20. 20

    ASP MVC将Array对象发送给JavaScript函数

  21. 21

    将jQuery注入TypeScript函数

  22. 22

    将数组对象传递给javascript函数

  23. 23

    如何将复杂的javascript自运行函数注入android中的webview中?

  24. 24

    注入需求对象取决于构造函数注入中的条件

  25. 25

    Angular 2依赖注入-独立于构造函数注入对象

  26. 26

    将函数插入javascript对象

  27. 27

    通过生成构造函数将超类注入原始对象

  28. 28

    使用 Guice 将特定对象注入特定构造函数

  29. 29

    将 ChangeTracker 注入构造函数

热门标签

归档