【发布时间】:2019-05-27 02:19:36
【问题描述】:
这是一个纯Javascript的方法,返回一个简单的对象,
MyClass.retObj = function() {
return {
x: {a:1, b:this.b}
,y: this.y
};
}
document.addEventListener('DOMContentLoaded', function(){ // ONLOAD:
console.log( MyClass.retObj().x ) // good...
console.log( MyClass.retObj() ) // BAD! show __proto__
}, false); // \ONLOAD
为什么它在现代浏览器中返回__proto__? 如何在当今(2019 年)禁用这种丑陋的行为?
MDN 说this feature "is no longer recommended"。
PS:是not a duplicate of this question,因为这里是最简单直接的上下文,我需要一个简单的答案……而且是关于“现在”的。
【问题讨论】:
-
"curisilly" -> 好奇地?
-
尽管如此,其余部分仍然没有多大意义。例如,“谁” 是什么意思?无需对投票发表评论:meta.stackoverflow.com/questions/357436/…
-
这是因为所有的对象都有这个,总是。枚举属性时,您必须忽略垃圾属性。奇怪的 JS 东西。
-
嗨@MarkMeyer,我用
console.log()编辑过,这就是我看到的。 -
@trognanders,谢谢...我在其他网站上看到了很少的 cmets(也许未来的浏览器版本会起飞)...但是没有问题吗?返回一个不是我定义的对象?强迫我的方法的用户摄入这么多垃圾?没有干净的 JSON?
标签: javascript prototype