Bu yerleşik JavaScript prototipleri genişletilmiş (veya hiçbir şekilde değiştirilemez) gerektiğini predominant opinion geçerli:Yerleşik Javascript prototiplerinin sembollerle genişletilmesi de engellenmeli mi?
Array.prototype.empty = function() { return this.length === 0; } // don't try that
bu kural ES2015 sembolleri için de geçerli mi? symbol
yana
const empty = Symbol("empty");
Array.prototype[empty] = function empty() { return this.length === 0; }
tanımla çakışmaları adlandırma bir nesne özelliği olabilir string
(ilkel, değişmez) ve object
(kimlik) 'in bir karışımıdır.
Normal nesne yansıma sembolleri etkilenmez: Reflect.ownKeys(Array.prototype)
ile
Object.getOwnPropertyNames(Array.prototype).indexOf("empty"); // -1
Ama ES2015 yansımasıdır.
Bu soru, gelecekte Reflect.ownKeys
ve Object.getOwnPropertySymbols
'u nasıl kullanacağımızla ilgilidir.
Şu an yerleşik alt sınıfları listeleyebileceğinizi unutmayın, bu nedenle yerleşik prototiplerini genişletmemek için bir neden daha var – CodingIntrigue
@RGraham Bu soruyu sormamın temel nedeni kullanım durumlarını daha iyi anlamaktır. veya göreceli olarak yeni bir özellik olduklarından sembollerin kenar durumları. Ben aslında yerleşik prototipleri genişletmeyeceğim. – rand