- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
<分区>
我做了一个小脚本,迭代并打印一个JSON对象的值,如果对象的值是另一个对象或数组,就会调用这个工作来迭代值(数组或对象) .
这是我在打印数组的值时出现的问题,打印的值也在 __ proto__ 中添加值,就像数组的一部分请注意,您需要有一个 <ul>
HTML 中 ID 为 jsonUls
的元素让这段代码工作。代码:
var json = '{"jsonObject":{"value1":"value2", "array1" : ["value1","value2","value3"]}}'; /* Create Json */
var element = $('#jsonUls');
var object = JSON.parse(json); /* Create object */
/* call the function*/
recursivePrintObjectValues(object, element);
function recursivePrintObjectValues(object, element) {
for(key in object) { /* Iterate the object */
var value = object[key]; /*Get the object value */
/* Verify if value is of type object or an array */
if(typeof value === 'object' || Array.isArray(value)){
/*Generate random */
var random = new Date().valueOf() * Math.random() + 351;
/* Append Li with key */
appendLi(key, '', element);
/*Append UL and get the selector*/
var ul = appendUl(random, element);
/*Call the function with the object and the selector to append (to iterate childs of this object)*/
recursivePrintObjectValues(value, ul);
} else {
appendLi(key, value, element);
}
}
}
function appendUl(random, element) {
var ul = $('<ul></ul>', {
id: random
})
ul.appendTo(element);
return ul;
}
function appendLi(key, value, element) {
if(value == '[object Object]') {
value = '';
}
$('<li></li>', {
text: key + ' : '+ value
}).appendTo(element);
}
结果如下,我不知道为什么以及如何避免它,希望任何人都可以解释我。
<pre>
<ul id="jsonUls">
<li>jsonObject : </li>
<ul id="448773395479.7797">
<li>value1 : value2</li>
<li>array1 : </li>
<ul id="295240780591.31195">
<li>0 : value1</li>
<li>1 : value2</li>
<li>2 : value3</li>
<li>$pnmap$ : function $$JSCompiler_prototypeAlias$$$$pnmap$$($f$$30$$,$opt_obj$$28$$){return $goog$array$map$$.apply($JSCompiler_alias_NULL$$,$pn$aargs_$$(this,arguments))}</li>
<li>$pnforEach$ : function $$JSCompiler_prototypeAlias$$$$pnforEach$$($f$$32$$,$opt_obj$$30$$){$goog$array$forEach$$.apply($JSCompiler_alias_NULL$$,$pn$aargs_$$(this,arguments));return this}</li>
<li>$pnequals$ : function $$JSCompiler_prototypeAlias$$$$pnequals$$($arr2$$13$$,$opt_equalsFn$$2$$){return $goog$array$equals$$.apply($JSCompiler_alias_NULL$$,$pn$aargs_$$(this,arguments))}</li>
<li>$pnfindIndex$ : function $$JSCompiler_prototypeAlias$$$$pnfindIndex$$($f$$41$$,$opt_obj$$43$$){return $goog$array$findIndex$$.apply($JSCompiler_alias_NULL$$,$pn$aargs_$$(this,arguments))}</li>
<li>$pnindexOf$ : function $$JSCompiler_prototypeAlias$$$$pnindexOf$$($obj$$76$$,$opt_fromIndex$$10$$){return $goog$array$indexOf$$.apply($JSCompiler_alias_NULL$$,$pn$aargs_$$(this,arguments))}</li>
</ul>
</ul>
</ul>
</pre>
我的理解是 Object.__proto__ 是 javascript 中的“顶级”原型(prototype)对象。我希望它的 __proto__ 为空,但在谷歌浏览器中(没有尝试过其他浏览器),它不
为什么 Object.__proto__ === Function.__proto__ 在 JavaScript 中? 这样设计的目的是什么? 最佳答案 __proto__ property对象的原型
我一直在研究 prototype chain在 Javascript 中,这个主题让我想知道...是否有一个通用名称或术语来指代原型(prototype)链末尾的所有其他对象? 我正在 GitHub
似乎在 JavaScript (ES6) 类中 super.__proto__ === this.__proto__ . 您能解释一下为什么会出现这种情况吗?该行为在不同浏览器中似乎是一致的,因此我怀
为什么如果F - 简单函数: F.prototype !== F.__proto__ 但是 Function.prototype === Function.__proto__ ? 最佳答案 F.pro
obj.prototype.__proto__ = events.EventEmitter.prototype 我有时会看到上面的代码,我用谷歌搜索了一下,他们说这一行将所有 EventEmitter
曾经能够毫无问题地做到这一点: for (data in dataArray) { // do some stuff }; 现在,它突然迭代这个 __proto__添加到我的 dataArray 的数
我正在阅读 __proto__ 和 prototype 对象之间的区别,但是当我尝试访问 __proto__ 的实例时一个对象,它返回给我 undefined。 下面是我写的代码: function
当一个对象被实例化时,无论是字符串/函数/等等,__proto__属性(property)包括在内。该属性似乎是由 __proto__ 生成的Object.prototype 中的访问器... Obj
__proto__ 已弃用。为什么像谷歌浏览器这样的大型浏览器仍在使用它?有没有计划倾倒它? 最佳答案 在语言/框架中最难做的事情之一实际上是删除已弃用的功能。世界上仍然有大量代码依赖于此功能。删除它
function makeAdder(x) { return function(y) { return x + y; }; } var add5 = makeAdder(5); add
我正在重新从头开始学习 JavaScript/做个人笔记,并遇到了一些我想要一些解释的东西。 谁能解释一下: Object.prototype.hasOwnProperty("__proto__");
下面是一些示例,展示了基于对象定义和创建方式的原型(prototype)继承的不同行为。我区分对象的“原型(prototype)属性”,例如someObject.prototype 和“原型(prot
我正在尝试使用带有继承的揭示模块模式。我似乎让它工作正常,但它使用“__proto__”,我知道它被认为已被弃用。有没有更好的方法来创建继承而不使用“__proto__”? var Person =
函数getBooks已在Author.prototype中定义。但它不能在 Author 对象中使用。当我使用 __proto__ 继承 Person 属性时。为什么Author对象没有getBook
我有这个功能: 函数 Foo(){} 根据这张图片: >> Foo.prototype -> Foo {} 所以如果我写: Foo.prototype.constructor 现在 - 它引
什么时候 __proto__ 有用? 很多浏览器都支持它,但由于不是所有浏览器都支持,所以程序员似乎害怕使用它。我从未在任何代码中看到它(例如库 jQuery 和 backbone.js)。 什么时候
当我创建一个空白对象时: var o = {}; 为什么新建对象时看不到'__proto __'对象,但添加函数时可以? 编辑:为了完整起见,要创建一个真正的空白对象(没有原型(prototype)链
Object.each , Object.keys , ... 当我尝试与作为类属性的对象一起使用时无法正常工作,请检查 this example : var map = {a: 1, b: []};
在 __proto__ 周围使用方括号时在一个对象中,__proto__是可枚举的。未提供方括号时,__proto__是不可枚举的。 例子: obj = {"__proto__": "Hello"}
我是一名优秀的程序员,十分优秀!