考虑到将以下数据输入到javascript引擎(比如犀牛):
{
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)那么它是什么,有什么想法吗?
发布于 2011-09-23 16:05:19
在java端,在被输入到犀牛javascript引擎之前,我发现price=[]是将名为ArrayList的键映射到只有一个空字符串对象的ArrayList对象。
然后,在javascript端吐出价格对象的键/值对,向我展示了--在所有上,它实际上不是任何类型的标准javascript对象!
我说出了应该有一个空字符串的和sku。现在,至少sku应该在其键/值映射转储中有值2490748,但它没有!叹息..。不知道该怎么做。
除了空:假属性似乎没有任何用处。但我觉得应该提一提:
sku=
空:假
indexOf:函数indexOf() {/* int indexOf(java.lang.Object) */}
notifyAll:函数notifyAll() {/* void notifyAll() */}
removeAll:函数removeAll() {/* boolean (java.util.Collection) */}
trimToSize:函数trimToSize() {/* void trimToSize() */}
containsAll:函数containsAll() {/* boolean (java.util.Collection) */}
包含:函数contains() {/*布尔包含(java.lang.Object) */}
等于:函数等于() {/*布尔值等于(java.lang.Object) */}
通知:函数notify() {/* void通知() */}
subList:函数subList() {/* java.util.List subList(int,int) */}
类:类java.util.ArrayList集:函数集() {/* java.lang.Object set(int,java.lang.Object) */}
isEmpty:函数isEmpty() {/* boolean () */}
add:函数add() {/* void (int,java.lang.Object)布尔add(java.lang.Object) */}
ensureCapacity:函数ensureCapacity() {/* void ensureCapacity(int) */}
size:函数size() {/* int size() */}
迭代器:函数迭代器() {/* java.util.Iterator迭代器() */}
clear:函数clear() {/* void () */}
等待:函数等待() {/*空等待()空等待(长)空等待(长,int) */}
listIterator:函数listIterator() {/* java.util.ListIterator listIterator(int) java.util.ListIterator listIterator() */}
retainAll:函数retainAll() {/* boolean (java.util.Collection) */}
toString:函数toString() {/* java.lang.String toString() */}
hashCode:函数hashCode() {/* int hashCode() */}
toArray:函数toArray() {/* java.lang.Object[] toArray( java.lang.Object[] ) java.lang.Object[] toArray() */}
lastIndexOf:函数lastIndexOf() {/* int lastIndexOf(java.lang.Object) */}
addAll:函数addAll() {/* boolean ( java.util.Collection)布尔addAll(int,java.util.Collection) */}
函数克隆() {/* java.lang.Object克隆() */}
get:函数get() {/* java.lang.Object get(int) */}
getClass:函数getClass() {/* java.lang.Class getClass() */}
删除:函数删除() {/* java.lang.Object删除(Int)布尔删除(java.lang.Object) */}
发布于 2011-09-22 22:05:12
如果这是外部大括号所描述的函数块,如下所示:
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。要确定地知道,我们必须在您提供的代码周围看到更多的上下文。您可以在这个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: []
}https://stackoverflow.com/questions/7521962
复制相似问题