Javascript:尝试将函数设置为数组中对象的成员
Javascript: Trying to set function as a member of an object in an array
我通过将C#代数表达式编译器移植到Javascript来教授自己Javascript。 我有一个 OpBank 对象,用于存储每个运算符的属性,例如,它的符号和指向实现运算符的函数的指针。 我知道JS没有函数指针,但我不知道还能怎么称呼它。
当我尝试加载页面时,出现以下错误:
"Microsoft JScript 运行时错误:无法获取属性'Plus'的值:对象为 null 或未定义"
当浏览器尝试解析底部的运算符数组时,就会发生错误,它抱怨OpBank.Plus。 我尝试了OpBank.Plus,OpBank.Plus(),只是普通的旧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
尚不存在。
不过,您可以简单地将其分为两个步骤:
var OpBank = {
Plus: function (left, right) {
return (left + right);
},
Minus: function (left, right) {
return (left - right);
}
}
OpBank.Operators = [
(new KeyValuePair("+", new ABinaryOperator("+", 1, OpType.Binary, "+", OpBank.Plus))),
(new KeyValuePair("-", new ABinaryOperator("-", 1, OpType.Binary, "-", OpBank.Minus)))
];
这
应该有效,至少在Firebug控制台上是这样。
var testObj = {
first: function(){
console.log("first");
},
second: function(){
console.log("second");
},
third: function(){
return typeof this.first;
}
};
testObj.third();
相关文章:
- 将数组对象传递到struts2中的操作类
- 如何使用jquery返回php-json数组对象
- 从其名称获取javascript数组对象
- 值未与数组对象绑定
- 如何按数组/对象值的倍数过滤对象数组
- 在表中显示数组对象
- 在数组对象中分组
- 将第二个或多个数组推送到数组对象 AngularJS 中
- 重新排列 JavaScript 数组/对象
- 键上的javascript数组对象过滤器
- handontable:在不更改数据数组/对象的情况下隐藏某些列
- 用于跟踪购物车可用性的Javascript数组/对象/哈希表
- 重建有角度的java脚本数组对象
- 对JSON数组对象进行排序
- 连接与数组对象相关的文本:方式和位置
- 哪些浏览器和版本支持将常见的类数组对象直接传递到fn.apply()
- 如何使用Handlebars循环数组对象和模板
- 是否可以引用JS数组/对象中的另一个元素
- Javascript中的名称索引-数组/对象
- 数组长度不等于数组对象