我实际上对 spider monkey api 和这个邮件列表都不熟悉。实际上我试图创建一个像 objectA.arrayA 这样的数组,回调代码是这样的。
char *value[] = {"abc", "xyz", "efg"};
int count = 0;
JSObject* val = JS_NewArrayObject(pContext, 0, NULL);
while(count < 3) {
jstr = JS_NewStringCopyZ(pContext, value[count]);
JS_DefineElement(pContext, val, count++, STRING_TO_JSVAL(jstr),
NULL, NULL, JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT);
}
vJs->DefineProperty(pObject, "arrayA", OBJECT_TO_JSVAL(val));
我正在获取 objectA.arrayA 的正确值,但是当我执行 objectA.arrayA.length 时,它说 arrayA 没有 ay 属性。你能告诉我我做错了什么吗?即使我正在制造刺痛,我也面临着同样的问题。
最佳答案
您的第一个明显问题是:
JS_NewArrayObject(pContext, 0, NULL);
零应该是数组的所需长度。
在我看来,您显然不知道如何使用 API。我相信可以在以下位置找到与您的问题相关的文档:
https://developer.mozilla.org/en/SpiderMonkey/JSAPI_Reference/JS_NewArrayObject
https://developer.mozilla.org/en/SpiderMonkey/JSAPI_Reference/JS_DefineProperty
https://developer.mozilla.org/en/SpiderMonkey/JSAPI_Reference/JS_DefineElement
和: https://developer.mozilla.org/en/SpiderMonkey/JSAPI_Reference/JSClass.addProperty
https://developer.mozilla.org/en/SpiderMonkey/JSAPI_Reference/JS_PropertyStub
这五个页面包含破解代码所需的所有信息。
关于javascript - 蜘蛛猴: Why JS array is not inheriting default properties like length,拼接等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9817720/