次のようなカスタムオブジェクトがあります
var locationsMap = {
"obj1":[1],
"obj2":[7],
"obj3":[21]
}
このカスタム オブジェクトを次のように呼び出すことができます。
var loc = "obj2";
alert(locationsMap[loc][0]);
そして、これはjsFiddleで正常に機能します。ただし、このロジックを NetSuite 内のコードに埋め込むと、loc が未定義になります。
nlapiLogExecution('debug',"Location: "+ loc); //works fine
nlapiLogExecution('debug','Location: '+locationsMap[loc][0]); //throws exception
NetSuite デバッガーで:
$ nlapiLogExecution('debug','Location: '+locationsMap[loc][0]);
> TypeError: Cannot read property "0" from undefined
オブジェクトを介して呼び出すと loc が undefined と表示されるlocationsMap
のに、それ自体を呼び出すと undefined と表示されないのはなぜですか?
- 編集 -
呼び出しnlapiLogExecution('debug','Location: '+locationsMap['obj2'][0]);
は期待どおりに機能します。
--編集2--
これらの問題が原因で、このアプローチを放棄することになりましたが、この動作が発生している理由を知りたいと思っています。