鉴于以下数据被输入javascript引擎(如rhino):
{
hello=66.66,
whygod=sun.org.mozilla.javascript.internal.NativeArray@7ba28183,
sku=[2490748],
world=sun.org.mozilla.javascript.internal.NativeArray@69e4fede,
price=[]
}
1) sku = [2490748] 和 price = [] 在javascript中代表什么类型的对象?
我原以为它们是数组,但它似乎不是那样的,因为当我运行以下逻辑作为处理这些数据的javascript引擎的一部分时,价格不会被删除:
function doStuff(row) { var price = row.get( 'price' ); if ( price == null || price == '' || price.length == 0) { row.remove( 'price' ); } return row; }
2)那么它是什么,任何想法?
答案 0 :(得分:0)
如果这是由外部括号描绘的功能块,如下所示:
function init()
{
hello=66.66
whygod=sun.org.mozilla.javascript.internal.NativeArray@7ba28183,
sku=[2490748],
world=sun.org.mozilla.javascript.internal.NativeArray@69e4fede,
price=[]
}
然后:
sku=[2490748]
将长度为2490748的数组分配给变量sku。要确切知道,我们必须看到您提供的代码的更多背景信息。您可以在此jsFiddle中查看sku
案例的一些诊断:http://jsfiddle.net/KFgwF/。
如果未在本地范围内定义sku,则会隐式将其声明为全局变量(因为它前面没有var
。
price=[]
正在为价格分配一个空数组。
如果您希望这是一个传递给函数的数据结构:
{
hello=66.66
whygod=sun.org.mozilla.javascript.internal.NativeArray@7ba28183,
sku=[2490748],
world=sun.org.mozilla.javascript.internal.NativeArray@69e4fede,
price=[]
}
然后,这根本就不是合法的javascript。要使其成为合法的数据结构声明,它必须如下所示:
{
hello: 66.66,
whygod: "sun.org.mozilla.javascript.internal.NativeArray@7ba28183",
sku: [2490748],
world: "sun.org.mozilla.javascript.internal.NativeArray@69e4fede",
price: []
}
答案 1 :(得分:0)
在被提供给rhino javascript引擎之前的Java端,我发现price = []是一个名为price的键映射到只有一个空字符串对象的ArrayList对象。
之后,在javascript端吐出价格对象的键/值对,向我显示 它根本不是任何类型的标准javascript对象 !
我吐出了价格,它应该有一个空字符串和 sku 。现在至少 sku 应该在其键/值映射转储中的某处具有值 2490748 ,但它没有!叹息......不知道如何处理这件事。
除了空:false属性似乎没什么用处。但我认为值得一提:
SKU =
空:假
indexOf:function indexOf(){/ * int indexOf(java.lang.Object) * /}
notifyAll:function notifyAll(){/ * void notifyAll() * /}
removeAll:function removeAll(){/ * boolean 的removeAll(java.util.Collection中) * /}
trimToSize:function trimToSize(){/ * void trimToSize() * /}
containsAll:function containsAll(){/ * boolean containsAll(java.util.Collection中) * /}
包含:function contains(){/ * boolean contains(java.lang.Object) * /}
equals:function equals(){/ * boolean equals(java.lang.Object) * /}
通知:function notify(){/ * void notify() * /}
subList:function subList(){/ * java.util.List subList(int,int) * /}
class:class java.util.ArrayList set:function set(){/ * java.lang.Object set(int,java.lang.Object) * /}
isEmpty:function isEmpty(){/ * boolean isEmpty() * /}
add:function add(){/ * void add(int,java.lang.Object)boolean 添加(java.lang.Object中) * /}
ensureCapacity:function ensureCapacity(){/ * void ensureCapacity(int) * /}
size:function size(){/ * int size() * /}
iterator:function iterator(){/ * java.util.Iterator iterator() * /}
clear:function clear(){/ * void clear() * /}
wait:function wait(){/ * void wait()void wait(long)void 等待(长,INT) * /}
listIterator:function listIterator(){/ * java.util.ListIterator listIterator(int)java.util.ListIterator listIterator() * /}
retainAll:function retainAll(){/ * boolean 中的retainAll(java.util.Collection中) * /}
toString:function toString(){/ * java.lang.String toString() * /}
hashCode:function hashCode(){/ * int hashCode() * /}
toArray:function toArray(){/ * java.lang.Object [] toArray(java.lang.Object [])java.lang.Object [] toArray() * /}
lastIndexOf:function lastIndexOf(){/ * int lastIndexOf(java.lang.Object中) * /}
addAll:function addAll(){/ * boolean addAll(java.util.Collection) boolean addAll(int,java.util.Collection) * /}
clone:function clone(){/ * java.lang.Object clone() * /}
get:function get(){/ * java.lang.Object get(int) * /}
getClass:function getClass(){/ * java.lang.Class getClass() * /}
remove:function remove(){/ * java.lang.Object remove(int)boolean 除去(java.lang.Object中) * /}