Javascript:尝试将函数设置为数组中的对象的成员

问题描述:

我教我自己Javascript通过将C#代数表达式编译器移植到Javascript中。我有一个OpBank对象,用于存储每个运算符的属性,例如它是符号和指向实现该运算符的函数的指针。我知道JS没有函数指针,但我不知道还有什么要调用它。Javascript:尝试将函数设置为数组中的对象的成员

当我尝试加载网页,我得到以下错误:

“Microsoft JScript运行错误:无法获得属性‘加上’值:对象为null或undefined”

的当浏览器试图解析底部的操作符数组时,会发生错误,这是对OpBank.Plus的抱怨。我尝试了OpBank.Plus,OpBank.Plus(),只是普通的旧Plus和this.Plus。无论如何,当操作符数组被加载时,我无法识别Plus函数。

var OpBank = { 
    Plus: function (left, right) { 
     return (left + right); 
    }, 

    Minus: function (left, right) { 
     return (left - right); 
    }, 

    Operators: [ 
     (new KeyValuePair("+", new ABinaryOperator("+", 1, OpType.Binary, "+", OpBank.Plus))), 
     (new KeyValuePair("-", new ABinaryOperator("-", 1, OpType.Binary, "-", OpBank.Minus))) 
     ] 
} 

是我试图不可能的?我是否应该使用OpBank的构造函数语法,即var ObBank = function(){}然后使用prototype来添加函数和数组?我不想这样做,因为我只需要一个OpBank来应用程序的生命,而且我不希望每种方法都必须实例化一个新的OpBank,因为它是一个非常大的对象(仅显示了其中的一部分) 。

+0

呃,你是用IE/WSH学习JavaScript的?更好地使用一个合理的环境,比如[node.js](http://nodejs.org/)! – ThiefMaster 2012-04-18 13:39:11

OpBank在评估对象字面值时尚不存在。

你可以简单地把它分为两个步骤,但:

​​
+0

谢谢ThiefMaster!如何在软件中解决绝大多数难以解决的问题通常非常简单,这真是太神奇了。 – sitterdave 2012-04-18 17:52:35

+0

顺便说一句,@ThiefMaster感谢您的快速回复。我也得看看node.js - 谢谢你的提示。 – sitterdave 2012-04-18 17:58:00

这应该工作,至少萤火控制台上。

var testObj = { 
    first: function(){ 
     console.log("first"); 
    }, 
    second: function(){ 
     console.log("second"); 
    }, 
    third: function(){ 
     return typeof this.first; 
    } 
}; 
testObj.third(); 
+0

感谢您的快速回复! – sitterdave 2012-04-18 17:58:41