这个字符串表示什么是Javascript对象?

时间:2011-09-22 21:55:06

标签: javascript rhino

鉴于以下数据被输入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)那么它是什么,任何想法?

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中)   * /}