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,因为它是一个非常大的对象(仅显示了其中的一部分) 。
OpBank
在评估对象字面值时尚不存在。
你可以简单地把它分为两个步骤,但:
谢谢ThiefMaster!如何在软件中解决绝大多数难以解决的问题通常非常简单,这真是太神奇了。 – sitterdave 2012-04-18 17:52:35
顺便说一句,@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();
感谢您的快速回复! – sitterdave 2012-04-18 17:58:41
呃,你是用IE/WSH学习JavaScript的?更好地使用一个合理的环境,比如[node.js](http://nodejs.org/)! – ThiefMaster 2012-04-18 13:39:11