明らかに、これはIEとは無関係なトピックです(高度なIEを除く)。それにもかかわらず、興味のある学生は、ECMAScript5標準のゲッターとセッターの実装について学ぶ必要があります。オブジェクトでは、プロパティまたはメソッドの最も一般的に使用される操作は、読み取り(参照)と書き込みです。たとえば、O.getは読み取り操作であり、O.set = 1は書き込み操作です。実際、IEを除く最新の主流ブラウザーの実装では、任意のオブジェクトの重要な値は、「Accessor属性」と呼ばれるGetterおよびSetterメソッドに置き換えることができます。
Getterが値のクエリを担当する責任があることは間違いありません。パラメーターは取られず、Setterはキー値の設定を担当します。値はパラメーターの形で渡されます。関数本体では、すべてのリターンが無効です。通常のプロパティとは異なり、取得または設定のみが宣言されている場合、メモリプロパティは読み取りと書き込みの両方を持つことはできません。ゲッターメソッドのみがある場合、読み取られます。同様に、セッターメソッドのみがある場合、読んだものは常に未定義です。オブジェクトメモリ属性を宣言する方法は?最速の方法は、オブジェクトリテラルの構文を使用して書き込むことです。次のコードをご覧ください。
コードコピーは次のとおりです。
var oo = {
名前: 'xianxin'、
sex()を取得{
「男」を返します。
}
};
//明らかにこれは許可されていません。なぜなら、Xianxinは外の世界が彼が男性であるという事実を変えたくないため、読み取り専用の機能のみがセックスに設定されているからです。
oo.sex = 'woman';
console.log(oo.sex); //結果はまだ人間です
興味深いことに、これは以前の理解、つまり、メソッドを定義するときには機能キーワードを使用していません。実際、ここで入手または設定すると、2つの異なる状態の関数として理解できます。包括的側面(書き込み)、安全な側(読み取り)、全体が別の形にバラバラにされている場合、表現の観点から伝統に従う必要がなくなるため、キーと値を分離するためにコロンを使用する必要はありません。次に、上記の例を続けてください。メモリプロパティに基づいて、どのように読み取りと書き込みになりますか?たぶん、次の段落があなたに答えを与えます:
コードコピーは次のとおりです。
var oo = {
名前: 'xianxin'、
sex()を取得{
if(this.sexx){
this.sexxを返します。
}それ以外{
「男」を返します。
}
}、set sex(val){
this.sexx = val;
}
};
//ああ、彼は非常に寛容であるため、人々でさえ性別を変えると、彼はそれを受け入れます。
oo.sex = 'woman';
console.log(oo.sex); //結果の女性
たぶん、これは不要だと思うかもしれません。なぜなら、GetとSetを完全に無視し、性的方法が2つの許可を持つことができるからです。しかし、私たちがGetを別々に取り出して設定した理由は、より厳格な解釈であるJavaScriptオブジェクト上のECMASACRIPT5のキー価値操作をより明確に理解するためです。もちろん、IEによって汚染された中国では、新しい主流のテクノロジーは常に場違いに見えます。実際のプロジェクト開発では、get and setを使用することはできませんが、将来それをしないことを保証できるのは誰ですか...