Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JSONP和这个对象_Javascript_Jquery_Javascript Events_Jsonp - Fatal编程技术网

Javascript JSONP和这个对象

Javascript JSONP和这个对象,javascript,jquery,javascript-events,jsonp,Javascript,Jquery,Javascript Events,Jsonp,我有一个javascript代码,它使用一个函数和键,我可以使用“this”对象,但我添加了一部分jsonp来使用Web服务,我无法访问“this”对象,强制更改所有代码以从窗口放置整个路由。这是我的原始代码: (function () { "use strict"; console.log("Hello World!"); window.programOne = window.programOne || {}; programOne = {

我有一个javascript代码,它使用一个函数和键,我可以使用“this”对象,但我添加了一部分jsonp来使用Web服务,我无法访问“this”对象,强制更改所有代码以从窗口放置整个路由。这是我的原始代码:

(function () {
    "use strict";

    console.log("Hello World!");
    window.programOne = window.programOne || {};

    programOne = {

        varS: {
            var1: "One",
            var2: null,
            var3: "Two"
        },
        demo: function(data){

            console.log( JSON.stringify(data) );
        },
        execute: function(values){

            // Works correctly when calling from programOne.execute({ "item": "Lorem"});
            //this.demo(values);
            //> { "item": "Lorem"}
            //this.varS.var2 = values;
            //console.log(this.varS.var1);

            console.log(this);
            //It is necessary to use it with the callback. The "this" is undefined object.
            //Does not work here inside "this" object?
            // this.demo(values);
            window.programOne.demo(values);
        },
        start: function(){

            window.executeMyCB = programOne.execute;

            var script = document.createElement('script');
            script.src = "http://whatever.com/the/script.js&callback=executeMyCB";
            document.getElementsByTagName('head')[0].appendChild(script);
        }
    };

    // Demo
    programOne.execute({ "item": "Lorem"});

    programOne.start();

}());
可以访问对象的函数和变量,而不必使用“窗口”指定它?从自己的脚本获取访问权限,但由于运行jsonp的函数(window.executeMyCB)不允许我使用“this”。我认为作为一个javascript新手,我不太理解并适应这段代码解决了我的错误,并且理解了我的问题/这个对象的操作


谢谢

使用
函数.prototype.bind
将对象绑定到您创建的全局函数:

window.executeMyCB = programOne.execute.bind(programOne);

或者尝试更改调用以通过对象访问该方法。不确定这是否适用于您的服务:

"http://whatever.com/the/script.js&callback=programOne.execute"

由于您有一个jQuery标记,如果您支持传统浏览器,还可以使用
$.proxy
而不是
.bind()

window.executeMyCB = $.proxy(programOne, "execute");

非常感谢。它工作正常,我现在正在阅读关于bind的文章,以了解它工作的原因