プライベート関数は、オブジェクトのコンストラクターで宣言されます (または、var functionName=function(){...} を通じて定義されます)。これらは、特権関数 (オブジェクトのコンストラクターを含む) およびプライベート関数によって呼び出すことができます。
特権メソッドは this.methodName=function(){...} によって宣言され、オブジェクトの外部のコードによって呼び出すことができます。 this.privileged function() メソッドを使用して特権関数を呼び出すことができ、また、private function() メソッドを使用してプライベート関数を呼び出すことができます。
パブリック プロパティは this.variableName を通じて定義され、オブジェクトの外部で読み取りおよび書き込みが可能です。プライベート関数から呼び出すことはできません。
パブリック メソッドは ClassName.prototype.methodName=function(){...} によって定義され、オブジェクトの外部から呼び出すことができます。
この書き方にも注意してください: var 関数名 = function 関数名 () {...} この関数は、呼び出し時に特権関数とプライベート関数の性質を持ちます。
コードをコピー
コードは次のとおりです:
Container.prototype.stamp = function (string) {
return this.member string;
}
Container.prototype.stamp = function (string) {
return this.member string;
} member string;
}
このようにして、メソッド myContainer.stamp('def') を呼び出すことができ、結果は 'abcdef' になります。
Private
プライベート メンバーはコンストラクターによって生成されます。通常の var 変数とコンストラクター パラメーターはプライベート メンバーと呼ばれます。
Java コード
コードは次のとおりです。
function Container(param) ) {
this.member = param;
var that = this;
}
function Container(param) {
this.member = param; 🎜>var secret = 3;
var that = this;
}
コンストラクターは、param、secret、that の 3 つのプライベート インスタンス変数を作成します。これらはオブジェクトに追加されますが、外部からアクセスしたり、オブジェクト自体の
パブリック メソッドからアクセスしたりすることはできません。これらにはプライベート メソッドでのみアクセスできます。プライベート メソッドはコンストラクターの内部メソッドです。
Java コード
function Container(param) ) {
関数 dec() {
if (秘密 > 0) {
秘密 -= 1;
戻り値
} else {
戻り値
}
this.member = param;
var that = this;
function Container(param) {
function dec() {
if (secret > 0) {
secret -= 1;
return true;
} else {
return
}
this .member = param;
var secret = 3;
var that = this;
プライベート メソッド dec はシークレット インスタンス変数をチェックします。 0 より大きい場合はシークレットをデクリメントして true を返し、それ以外の場合は false を返します。このオブジェクトの使用を 3 回までに制限するために使用できます。
いつものように、プライベート変数を定義します。これは、このオブジェクトをプライベート メソッドで使用できるようにするために使用されます。これは、ECMAScript 言語仕様にバグがあるために行われます。
このバグにより、this を内部メソッドに正しく設定できなくなります。
パブリック メソッドからプライベート メソッドを呼び出すことはできません。プライベート メソッドを便利にするには、特権メソッドを導入する必要があります。
特権
特権メソッドはプライベート変数とメソッドにアクセスでき、それ自体はパブリック メソッドや外部世界からアクセスできます。特権メソッドは削除または置き換えることができますが、
変更したり、その秘密を強制的に公開したりすることはできません。
特権メソッドは、コンストラクターでこれを使用して割り当てられます。
Java コード
コードをコピー
秘密 -= 1;
戻り値
} else {
戻り値
}
this.member = param;
var that = this;
if (dec()) {
return that.member;
} else {
return null;
}
}
function Container(param) {
function dec(); {
if (secret > 0) {
secret -= 1;
return true;
} else {
return
}
this .member = param;
var Secret = 3;
var that = this;
if (dec()) {
return that.member;
} else {
return null;
}
};
サービスは特権メソッドです。 myContainer.service() への最初の 3 回の呼び出しでは、「abc」が返されます。それ以降はnullを返します。サービスはプライベート dec メソッドを呼び出し、
dec メソッドはプライベート シークレット変数にアクセスします。サービスは他のオブジェクトやメソッドから見えますが、プライベート変数に直接アクセスすることはできません。
クロージャ
JavaScript にはクロージャがあるため、パブリック、プライベート、特権メンバーのパターンが可能です。これは、外部メソッドが戻った後でも、内部メソッドは常にその外部メソッドの
var 変数とパラメーターにアクセスできることを意味します。これは JavaScript 言語の非常に強力な機能です。現在、この機能の活用方法を示した JavaScript
プログラミングの書籍はなく、ほとんどの書籍では言及さえありません。
プライベートメンバーと特権メンバーは、オブジェクトの構築時にのみ生成できます。公開メンバーはいつでも追加できます。
モード
パブリック
Java コード
コードをコピー
コードは次のとおりです:
function Constructor(...) {
this.membername = 値;