Google Closure Advanced |无法识别对象属性|动态属性?

时间:2012-09-03 22:49:51

标签: javascript google-closure

实际错误代码

  

JSC_INEXISTENT_PROPERTY

摘要

我为下面列出的代码收到了此错误,并在下面发表了评论。

我这样打电话。 o_p.page保存用户输入,其中一个属性确实为tag

Mo.AppBAdder.image_element = vDomBMAdd(o_p.page);

o_p.page通过调用保存用户输入的对象来填充,如下所示:

o_p.page = text_object.getArray();

有没有办法可以做到这一点,所以Google Closure不觉得该属性不存在?

设置选项是O.K.另外,如果需要,我不介意稍微修改一下代码。

文本的构造函数读取用户输入,如下所示:

Su.text = function (form_elements) {
    this.text_object = {};
    var key;
    for (key in form_elements) { //*u
        if (form_elements.hasOwnProperty(key)) {
            this.text_object[form_elements[key].name] = form_elements[key].value;
        }
    }
    return this;
};

代码片段

function vDomBMAdd(bookmark_object) {
    var link_element = document.createElement('a'),
        image_element = document.createElement('img'),
        page_element = $a('#' + bookmark_object.tag + '_page'), // error here - inexistent property

参考

不存在意味着与不存在相同

1 个答案:

答案 0 :(得分:3)

您有两个选择:创建一个声明'tag'属性的extern文件,或者更适当地给出属性的定义,使用带引号的属性访问:

bookmark_object['tag']

这两种方法都允许您访问“外部”属性并且兼容ADVANCED优化,但使用extern文件允许您声明属性所持有的值的预期类型,从而提供更好的类型检查。