これは、組み込みのJavaScriptのプロトタイプpredominant opinionを延長(またはいずれかの方法で変更)すべきではないです。組み込みのJavascriptプロトタイプの拡張も避けなければなりませんか?
この規則は、ES2015シンボルに適用されますか? symbol
ので
const empty = Symbol("empty");
Array.prototype[empty] = function empty() { return this.length === 0; }
は、定義によって名前の競合を全くオブジェクトのプロパティが存在しないことができるstring
(プリミティブ、不変)とobject
(アイデンティティ)の混合物です。
通常のオブジェクトの反射は、シンボルの影響を受けません。Reflect.ownKeys(Array.prototype)
と
Object.getOwnPropertyNames(Array.prototype).indexOf("empty"); // -1
しかし、ES2015反射があります。
この質問は、主に今後Reflect.ownKeys
とObject.getOwnPropertySymbols
の使用方法についてです。
組み込み関数のサブクラス化ができることを忘れないでください。組み込み関数のプロトタイプを拡張しないもう一つの理由があります。 – CodingIntrigue
@RGrahamなぜこの質問をしたのかの主な理由は、またはシンボルのエッジの場合は、比較的新しい機能であるためです。私は実際に組み込みのプロトタイプを拡張しないと思う。 – rand