函数内的对象访问不起作用。

3
这是代码:

这是代码:

(function(Info, undefined) {
    var createInfoTableForFeature = function (obj) {
        var data2form = {};
        data2form.name = obj.name;
        data2form.state = obj.state;
        data2form.stateid=obj.stateId;
        data2form.city = obj.city;
        data2form.cityId=obj.cityId;
        data2form.sector = obj.sector;
        data2form.sectorId=obj.sectorId;
        data2form.municipality = obj.municipality;
        data2form.municipalityId=obj.municipalityId;
        data2form.parish = obj.parish;
        data2form.parishId = obj.parishId; 
        data2form.postcode = obj.postcode;
    }
    Info.copy2form = function(data){
        console.log(data);
    }
})(window.Info = window.Info || {});

当我调用 Info.copy2form(data2form) 时,data2formundefined

2
Info.copy2form被调用在哪里? - Chandu
2
Info.copy2form(data2form) 的上级调用在哪里?data2form 只存在于 createInfoTableForFeature 内部。 - gen_Eric
不应该将“undefined”用作参数名称。 - EricG
我不知道为什么它会是未定义的?http://jsfiddle.net/ra4aG/1/,对我来说可以工作(查看控制台),你可能会发现你只是在运行上面的代码之前调用了该方法。 - Josh Mc
在函数createInfoTableForFeature内部 - Santiago Elvira Ramirez
显示剩余4条评论
3个回答

5

如果你想让 data2form 成为全局变量,那么在变量声明之前删除 var 关键字即可使其成为全局变量。

如果你想让它在 Info 容器内无法访问,但在其他地方都可以访问,可以这样声明:

Info.data2form = {};

然后像这样调用您的函数:

Info.copy2form(Info.data2form)

3

看起来你的帖子与JSON无关,那没关系。

你的data2form在函数外面不存在。你应该将它赋给window.data2form或在函数外部定义var data2form。


1

这样做不起作用,因为data2form是匿名函数(createInfoTableForFeature)内的局部变量。

这是1000个解决方案之一:

function createInfoTableForFeature(obj) {
    var data2form = {};
    data2form.name = obj.name;

    data2form.state = obj.state;
    data2form.stateid=obj.stateId;

    data2form.city = obj.city;
    data2form.cityId=obj.cityId;

    data2form.sector = obj.sector;
    data2form.sectorId=obj.sectorId;

    data2form.municipality = obj.municipality;
    data2form.municipalityId=obj.municipalityId;

    data2form.parish = obj.parish;
    data2form.parishId = obj.parishId; 

    data2form.postcode = obj.postcode;

    return data2form;
}

var data2form = createInfoTableForFeature(obj);
Info.copy2form(data2form);

我猜你是想在createInfoTableForFeature方法中添加return data2form;对吗? - gen_Eric

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接