javascript eval 如何

标签 javascript

var obj = {x : 2}; eval.call(obj, 'x');//ReferenceError: x 未定义 如何更改最后一行以通过变量名获取值?

澄清
'x' - 某些 obj 上下文中的任何表达式,可能不是 obj 参数

原始问题

/**
 * Guards 'this' when delegating method as a callback to others. Arguments aren't known beforehand and will be provided by consumer.
 */
delegate = function(context, func) {
    return function() {
        var args = [];
        for ( var i = 0; i < arguments.length; i++)
            args.push(arguments[i]);
        func.apply(context, args);
    };
};

reference = function (context, 'expression to evaluete to get reference value') {
    ... TODO
};

'delegate' - 委托(delegate)函数调用,如何在不同上下文中'delegate a reference'并可能'dereference'?

更新
这里有两种使用 eval 的可能性:
1. eval.call(null, '在全局上下文中计算表达式');
2. eval('在调用 eval 函数的上下文中计算表达式')
3. 如何在一些预定义的“上下文”中进行评估?

我想模仿 C++ 引用,当您可以将它放在任何上下文中并“取消引用”到值时(但是当您取消引用它时,值可能会更改并且您应该获得新值)。就像在 javascript 中一样,您将对象作为函数参数,并且只要您获得 obj.someproperty,您就会获得最新的 someproperty 值(如果它已更改)。但是当你试图传递一个原语或者整个对象将被其他人改变时,这将不起作用。如何将对“整个对象”的引用“传递”到其他上下文?

清楚地了解我想要什么:)
javascript how to create reference

我在找什么:

createReference = function(context, prop) {
    return function() {
        return context[prop];
    };
};

Provider = function() {
};
Provider.prototype.x = 5;
Provider.prototype.getXRef = function() {
    return createReference(this, 'x');
};
Provider.prototype.incrementX = function() {
    this.x = this.x + 1;
};

var provider = new Provider();
var refX = provider.getXRef();
provider.incrementX();
alert(refX());

Brianpeiris 坦克!

最佳答案

这应该可以做到,不需要评估:

var obj = {x: 2};
var value = obj['x'];

关于javascript eval 如何,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5810311/

相关文章:

javascript - 如何在不更改 html 的情况下使用 jquery 删除 &lt;textarea&gt; 中内容之前的多余空格

javascript - 获取 NodeJS 服务器监听的端口号

javascript - Ionic - 后退按钮关闭键盘但输入仍然聚焦

javascript - 如何将 TogetherJS 用作聊天应用程序?

javascript - 为什么 form.submit() 不起作用?

php - 使用 jquery 产品配置器添加和删除文本行的最佳方法

javascript - 我可以使用带有两个变量的 case/switch 语句吗?

javascript - 尝试转换为驼峰大小写时,toUpperCase 在 for 循环中不起作用

javascript - 在 React 应用程序中更新动态渲染元素时出现问题

javascript - 如果隐藏所有子 Div,如何隐藏父 DIV(显示 :none)