質問: **Internal Slot とは何でしょうか?** ・プロパティとは異なる? ・内部的な場所なので、意図的にアクセスすることはできない? ・決められたルールに従って処理されるので利用者は気にする必要がない、ということでしょうか? ・それとも__proto__みたいに、非推奨だけれどもアクセスする方法はあるのでしょうか?
回答: 6.1.7.2 Object Internal Methods and Internal Slots に説明があります。それに基づくと回答は以下になります。 > > プロパティとは異なる? > > > 異なります。 > > 内部的な場所なので、意図的にアクセスすることはできない? > > > できません。正確には、アクセスする方法は規定されていません。 ただし slot によってはアクセスする方法が規定されている場合もあります。 > > 決められたルールに従って処理されるので利用者は気にする必要がない、ということでしょうか? > > > 基本的にはその通り、気にする必要はありません。 > > それとも__proto__みたいに、非推奨だけれどもアクセスする方法はあるのでしょうか? > > > 実装やslotの内容によってはある可能性があります。 `Internal method` と `Internal slot` は、主にECMAScriptの処理系の実装者に向けて、詳細な動作を説明・規定するために設けられた概念とのことです。そのため普遍的にアクセスする方法は存在しないようです。 ただし個別に実際のメソッドやプロパティとしてアクセスできるものもあり、それらは個別に仕様書内に、追うのは大変そうですが、書かれています。 また、過去の質問と考え合わせると、Promiseがどのように実装されているかに興味がおありのように見受けられます。もしそうならば、Promiseが実装されていない JavaScript 処理系に向けて、JavaScriptで実装された es6-promise などが存在しますので、ソースコード(es6-promise) を参考にされると良いかもしれません。 ただ、これらのJSによる実装は、internal methodやslotをただのオブジェクトを用いて実装していますので、それらに無理矢理アクセスすることは可能になっており、その点はECMAScriptの仕様書の定義外であることに、ご留意ください。