Ben belgelerinde herhangi bir resmi açıklama bulmak mümkün olmamıştır ama özelliklerini gri bazı testler vardır dayanan bir tahminde var JavaScript motoru tarafından belirlenen varsayılan olanlar/ve kodun kendisi tarafından değil.
var foo = [1,2,3,45,1337];
console.dir(foo);
konsolunda verir bir Array içinde
length
: İşte bazı örnekler __proto__
olduğu içinde endeksleri gri ama length
ve her şey değildir
Bildirim söyledi.
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);
den
kod
prototip konsolda verir: Burada ilginç bir çok şey vardır
. Tüm örnekleri greet
gri değil. Ancak her yerde __proto__
grileşmiştir (muhtemelen motor tarafından prototipine ayarlandığı için). Ayrıca Person
dan geçersiz kılınan yapıcı gri olur, ancak Employee
açıkça belirlenen yapıcı gri edilmez.
Bu yüzden burada kaba bir düzen olduğunu düşünüyorum. Bu, Chrom'un (e/ium), daha düşük olma olasılığınızı düşündüğünün altını çizdiği özelliklerden biri ya kalıyor ya da dilin bir yapısı olarak motoru, ama mükemmel değil gibi görünüyor. (Ama kim, değil mi?) Denemeye başka ilginç şey F12 ve tip console.dir(window)
etmektir. Orada, web sitesinin Javascript'i tarafından küresel pencere ad alanına konan şeyler dışında grileşmiş neredeyse her şeyi göreceksiniz.
Nesneleri genişlettiğinizde, soluk özelliklerin değerleri var mıydı yoksa bir "(...)" yi tıklamanız mı gerekiyordu? – apsillers
@apsillers, örneğimde onları tıkladım. Cevabınızdaki sayısız öznitelik ile kesinlikle alakalı. Teşekkürler – Ben
Italic özellik adlarının bir getter işlevini gösterdiği, ancak italik alıcıların da (...) 'davranışına neden olduğu için sordum. Eğer (...) 'olmadan italik bir özelliği olsaydı, bu sıra dışı olurdu. Yine de var, bu yüzden tamamen normal. (Bu konuda cevabımı biraz ekledim.) – apsillers