JavaScript的Function构造函数的局限性

弗兰迪

这有些奇怪,我不知道该如何克服。

基本上,我在这里有这个字符串:

var s = 'var Bla = {variable: true, get: function() { return this.variable;}}; return Bla;'

并使用Function构造函数来解析此构造。

var fn = new Function(s);

它很好用,除了内部函数“ get”不再存在..就像没有解析一样?!

fn().variable  -> is there and returns "true".
fn().get  -> is undefined, not existing.

有任何想法吗?

PS:我编辑了原始问题,以指出真正缺少的内容。

詹姆斯·索普

您发布的代码与此等效:

var fn = function() {
    var Bla = {
        variable: true, 
        get: function() { 
            return this.variable;
        }
    };
    return Bla;
}

因此,您不能直接使用fn.variablefn.get-相反,您需要调用该函数:

var x = fn();
alert(x.get()); //alerts true
x.variable = 1;
alert(x.get()); //alerts 1

Bla只是函数中的局部变量,不会从中返回。该代码很容易就是:

var fn = function() {
    return {
        variable: true, 
        get: function() { 
            return this.variable;
        }
    };
}

和你会得到相同的效果。调用函数后,从中返回的对象是包含variable的对象get

实例对象

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章