我怎样才能动态绑定"这个"每个功能?

时间:2016-02-17 19:15:31

标签: javascript jquery function dynamic this

我正在寻找一种方法将this绑定到每个function

我还试图创建一个执行上下文(包装器);对于包含<script> - 标签

的脚本/模板,这不起作用

以下是我想要的例子..

示例:

//Added "this" to each function: "this_"

//Inside <script src='external_source_link'></script>

function a() { alert(this) }
a(); //result: "this_"

我需要一种方法来动态检测创建的​​任何函数。在此之前(创建函数)我应该有可能向函数或函数体添加一些东西(参数和参数)

function a() { } //my dynamically manipulation: a = a.bind("this_");

这不是一个包装{ },因为我还使用<script>从外部资源加载脚本 - 标签

<script src="external_source_link"></script>

所以也许是Funtion.prototype ...

的操纵解决方案

1 个答案:

答案 0 :(得分:0)

如果我理解得很清楚,proxy需要this

如果你想要,你可以这样做:

function caller(){

    proxy(this,callee, "hello");

}
function callee(testStr){
    console.log("this: ", this);

    console.log("testStr: ", testStr);
}

function proxy(thisToBind, fnToCall){
    var args = arguments;
    if (args.length > 2) {
        delete args[0];
        delete args[1];
    }
    else {
        args = undefined;
    }
    fnToCall.call(thisToBind, args);
}

caller();

如果你想全局覆盖原始Function.prototype.constructor(对于所有功能)我恐怕你不能。但请查看Mozilla reference