在chrome控制台中使用console.dir()时,对象的属性稍微褪色是什么意思。
例如,看看" top,width,worldVisible,x& ý"在此屏幕截图中。
我在这里查看了API参考https://developer.chrome.com/devtools/docs/console-api#consoledirobject,但没有运气。
由于
答案 0 :(得分:36)
Faded属性apper表示不可枚举的属性。如果我们这样做:
var a = {};
Object.defineProperties(a, {
hello: { enumerable: false },
world: { enumerable: true }
});
console.dir(a);
然后我们看到hello
已褪色,而world
则不然。
在您的代码中,如果您执行for(prop in obj) { console.log(prop); }
(其中obj
是您在控制台屏幕截图中显示的任何对象),您将看到只有枚举的属性不会被枚举。< / p>
您还可以使用Object.getOwnPropertyDescriptor(obj, "worldVisible")
进行检查,enumerable: false
应返回具有(...)
属性的对象。
请注意,属性名称上的斜体表示属性值由getter函数定义。 (这也会导致值在函数运行之前显示public void Analizar(IEnumerable<byte> bytes)
{
var listado = new List<AnalisisResumenDiarioGenerico>();
using (var e = bytes.GetEnumerator())
{
var arr = new byte[5];
var posModFive = 0;
while (e.MoveNext())
{
arr[posModFive] = e.Current;
posModFive++;
if (posModFive == 5)
{
listado.Add(ObtenerPaquete(arr));
posModFive = 0;
}
}
if (posModFive != 0) { /* Hey, 5 did not divide the total length! */ }
}
//InsertInDB(listado);
}
值。)这是一个完全独立的可枚举问题,导致名称褪色。您可以使用不是褪色的非可枚举属性的斜体getter定义属性,反之亦然。
答案 1 :(得分:0)
我无法在文档中找到任何官方解释,但我有一个很好的猜测基于一些测试灰色属性是由Javascript引擎默认/设置而不是代码本身。以下是一些例子:
数组中的length
var foo = [1,2,3,45,1337];
console.dir(foo);
在控制台中提供:
请注意,索引不会显示为length
,而__proto__
中的所有内容都是。
var Person = function() {
this.canTalk = true;
};
Person.prototype.greet = function() {
if (this.canTalk) {
console.log('Hi, I am ' + this.name);
}
};
var Employee = function(name, title) {
Person.call(this);
this.name = name;
this.title = title;
};
Employee.prototype = Object.create(Person.prototype);
Employee.prototype.constructor = Employee;
Employee.prototype.greet = function() {
if (this.canTalk) {
console.log('Hi, I am ' + this.name + ', the ' + this.title);
}
};
var bob = new Employee('Bob', 'Builder');
bob.greet();
console.dir(bob);
在控制台中提供:
这里有很多有趣的事情。 greet
的所有实例都不会显示为灰色。但是,__proto__
到处都是灰色的(可能是因为引擎将其设置为原型)。此外,来自Person
的重写构造函数也显示为灰色,但Employee
的显式设置构造函数未显示为灰色。
所以我认为这里有一个粗略的模式,就是Chrom(e / ium)灰化了它认为你不太可能关心的属性,要么是因为它们是继承的,要么是由引擎设置的作为语言的构造,但它似乎并不完美。 (但是谁是对的?)另一个有趣的尝试是 F12 并输入console.dir(window)
。在那里你几乎看到一切都变得灰暗,除了网站的Javascript把它放到全局窗口命名空间中。