私は、C#代数式コンパイラをJavascriptに移植することで、自分自身にJavascriptを教えています。各演算子の属性を格納するOpBankオブジェクトがあります。たとえば、シンボルと、演算子を実装する関数へのポインターです。JSには関数ポインタがないことは知っていますが、他に何を呼び出すべきかわかりません。
ページを読み込もうとすると、次のエラーが発生します。
「MicrosoftJScriptランタイムエラー:プロパティ「Plus」の値を取得できません:オブジェクトがnullまたは未定義です」
このエラーは、ブラウザが下部のOperators配列を解析しようとしたときに発生し、OpBank.Plusについて不平を言っています。OpBank.Plus、OpBank.Plus()、昔ながらのPlus、this.Plusを試してみました。いずれにせよ、Operators配列がロードされたときに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(){}次に、プロトタイプを使用して関数と配列を追加しますか?アプリの存続期間中に必要なOpBankは1つだけであり、新しいOpBankはかなり大きなオブジェクトであるため、すべてのメソッドでインスタンス化する必要がないため、これはやりたくありませんでした(上に示したのはその一部のみです)。 。