我想知道,当我们在范围变量中看到或悬停在它们上面时(在Chrome开发人员工具中),对象的某些属性似乎是暗淡突出显示的。它意味着什么?
//示例代码
'use strict'
function myClass(first, second) {
// this.pehla = first;
var private_Var = 'i_am_private_variable';
this.doosra = second;
Object.defineProperty(this, 'pehla', { value: '_Haani_Constant', writable: false });
};
var instanceOfClass = new myClass('1', '2');
console.log(instanceOfClass.pehla);
console.log('Assigning value to pehla');
console.log("instanceOfClass.pehla = 'SomeOtherText' ");
try {
instanceOfClass.pehla = 'SomeOtherText';
} catch (e) {
console.log(e.message);
}
参见图片以供参考
答案 0 :(得分:4)
变暗的属性是没有默认描述符属性的属性,即可配置,可写,可枚举的属性,将其中任何一个设置为false将导致属性变暗。
var test = {
prop1:"test",
prop2:"test",
prop3:"test",
prop4:"test",
prop5:"test",
prop6:"test",
prop7:"test",
prop8:"test",
prop9:"test",
prop10:"test",
};
Object.defineProperty(test,"other",{
enumerable:true
});
Object.defineProperty(test,"other1",{
enumerable:false
});
Object.defineProperty(test,"other2",{
writeable:false
});
Object.defineProperty(test,"other3",{
configurable:false
});
console.log(test);
展开对象树时,您会看到other
未变暗,other1
,other2
,other3
为灰色
一些例外:
//other1 will not be dimmed for the following
Object.defineProperty(test,"other1",{
enumerable:true,
writeable:false,
configurable:true
});
Object.defineProperty(test,"other1",{
enumerable:true,
writeable:false,
configurable:false
});
答案 1 :(得分:1)
不可枚举的属性显示为灰色。另一个答案混淆的原因是默认情况下defineProperty将可枚举设置为false。因此,除非在参数中将enumerable显式设置为true,否则使用defineProperty定义的属性将变暗。
尝试运行以下代码来测试DevTools中不同属性的外观:
var test = {
prop1:"test",
prop2:"test",
prop3:"test",
};
Object.defineProperty(test,"other",{
enumerable:true
});
Object.defineProperty(test,"other1",{
enumerable:false
});
Object.defineProperty(test,"other2",{
writeable:false
});
Object.defineProperty(test,"other3",{
configurable:false
});
console.log(test);
并尝试运行以下代码以查看哪些属性实际可枚举:
for (i in test) console.log(i)
答案 2 :(得分:0)
通过简单地回复我公司网站上的String.prototype
,它似乎是隐藏的,是继承/预先生成的属性&功能
在这种情况下,numberFormat
,regexIndexOf
和regexLastIndexOf
是我们为扩展类而创建的函数,稍后重用。它还解释了为什么通常在JSON或JS对象中,您通常会看到它们都是全彩色的。
另一个例子: