Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 方法在现代浏览器中返回_uproto__uu?如何删除它?_Javascript_Proto - Fatal编程技术网

Javascript 方法在现代浏览器中返回_uproto__uu?如何删除它?

Javascript 方法在现代浏览器中返回_uproto__uu?如何删除它?,javascript,proto,Javascript,Proto,这是一个返回简单对象的纯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( MyClas

这是一个返回简单对象的纯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
为什么它在现代浏览器中返回一个
\uuuuuuuuuuuuuuuuuuuuuuu
如何在当今(2019年)消除这种丑恶行为

MDN是这么说的


是的,因为这里是最简单和直接的上下文,我需要一个简单的答案。。。它是关于“现在”

为什么[它显示]一个
\uuuuuuuuuuuuuuuuuu

如果您想了解对象为何以某种方式运行,原型链非常重要。它是否显示为
\uu proto\uu
[[Prototype]]
并不真正相关,是吗

如何禁用这个丑陋的[对象可视化]

如果这真的困扰你,请使用其他浏览器

奇怪的是,MyClass.retObj().x[似乎没有]
\uuuuu proto\uuuu

这确实很有趣,可能控制台认为原型与观众无关,因此它隐藏了原型,但这两种情况下都不是。然而,另一方面,这种可视化事物的动态行为有点误导,因为人们可能认为
\uuuu proto\uuu
不存在于一个对象上,而存在于另一个对象上(它确实存在于两个对象上)

MDN表示,[
\uuuuuuu proto\uuuuu
]”不再被推荐。 如何禁用这个丑陋的[
\uuuuu proto\uuuu
属性]

我不建议使用
var
,向后兼容虽然难看,但却是必须的。删除所有这些糟糕的设计决策将“破坏互联网”,因此保留它们肯定会更好

但是没有问题吗

是的,
\uuuuuuuuuuuuuuuuuuuu
对性能优化是有问题的,但是。。。它是JavaScript,浏览器知道如何优化不确定性

返回一个不是我定义的对象

您还没有定义
{}.toString()
。如果您确实需要一个完全空白的对象,请使用

 Object.create(null)
强迫我的方法的使用者摄入这么多垃圾

\uuuu proto\uuuu
不可枚举和继承,如果您不主动搜索它,您不会意外地以编程方式找到它

没有干净的JSON

为什么[它显示]一个
\uuuuuuuuuuuuuuuuuu

如果您想了解对象为何以某种方式运行,原型链非常重要。它是否显示为
\uu proto\uu
[[Prototype]]
并不真正相关,是吗

如何禁用这个丑陋的[对象可视化]

如果这真的困扰你,请使用其他浏览器

奇怪的是,MyClass.retObj().x[似乎没有]
\uuuuu proto\uuuu

这确实很有趣,可能控制台认为原型与观众无关,因此它隐藏了原型,但这两种情况下都不是。然而,另一方面,这种可视化事物的动态行为有点误导,因为人们可能认为
\uuuu proto\uuu
不存在于一个对象上,而存在于另一个对象上(它确实存在于两个对象上)

MDN表示,[
\uuuuuuu proto\uuuuu
]”不再被推荐。 如何禁用这个丑陋的[
\uuuuu proto\uuuu
属性]

我不建议使用
var
,向后兼容虽然难看,但却是必须的。删除所有这些糟糕的设计决策将“破坏互联网”,因此保留它们肯定会更好

但是没有问题吗

是的,
\uuuuuuuuuuuuuuuuuuuu
对性能优化是有问题的,但是。。。它是JavaScript,浏览器知道如何优化不确定性

返回一个不是我定义的对象

您还没有定义
{}.toString()
。如果您确实需要一个完全空白的对象,请使用

 Object.create(null)
强迫我的方法的使用者摄入这么多垃圾

\uuuu proto\uuuu
不可枚举和继承,如果您不主动搜索它,您不会意外地以编程方式找到它

没有干净的JSON


我的回答听起来可能是意见多于事实,但我会试一试。参考文章指出,不建议使用_u___; proto,也就是说,避免自己直接将其放入代码中

也就是说,不要这样做:

function Person() {
   this.Name = "";
}
Person.prototype.setName = function(name) {
   this.Name = name;
};
Person.prototype.getName = function() {
   return this.Name;
};

var john = new Person();
console.log( john.__proto__ );

由于建议从浏览器中删除proto,因此您不应在代码中直接使用它,因为将来的浏览器更新可能会完全删除它,然后您的代码将因这些更新而中断

我的回答听起来可能是意见多于事实,但我会试一试。参考文章指出,不建议使用_u___; proto,也就是说,避免自己直接将其放入代码中

也就是说,不要这样做:

function Person() {
   this.Name = "";
}
Person.prototype.setName = function(name) {
   this.Name = name;
};
Person.prototype.getName = function() {
   return this.Name;
};

var john = new Person();
console.log( john.__proto__ );

由于建议从浏览器中删除proto,因此您不应在代码中直接使用它,因为将来的浏览器更新可能会完全删除它,然后您的代码将因这些更新而中断

“奇怪的愚蠢”——>奇怪的是?尽管如此,它的其余部分仍然没有多大意义。例如,“谁”是什么意思?没有人被要求对投票进行评论:这是因为所有对象都有投票权。枚举属性时,必须忽略垃圾属性。古怪的JS东西。嗨@MarkMeyer,我用
console.log()
编辑过,这就是我看到的。@trognanders,谢谢。。。我在其他网站上看到了一些评论(也许未来的浏览器版本会起飞)。。。但是没有问题吗?返回一个不是我定义的对象?强迫我的方法的使用者摄入这么多垃圾?没有干净的JSON?“奇怪地愚蠢”->奇怪的是,它的其余部分仍然没有多大意义。例如,“谁”是什么意思?没有人被要求对投票进行评论:这是因为所有对象都有投票权。枚举属性时,必须忽略垃圾属性。古怪的JS东西。嗨@MarkMeyer,我用
console.lo编辑过