这是奇怪的事情,我不知道如何克服它。
基本上,我在这里有这个字符串:
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:我编辑了我的原始问题,以表明他们真正缺少的是什么。
答案 0 :(得分:4)
您发布的代码相当于:
var fn = function() {
var Bla = {
variable: true,
get: function() {
return this.variable;
}
};
return Bla;
}
因此,您无法直接使用fn.variable
或fn.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
:
答案 1 :(得分:0)
你的例子很好。
我试过并发出:
fn().get()
按照您的预期返回true。