技術的な答えはノーです。プロトタイプ化された関数の基本的な実装は、Cのような言語での静的メソッドの実装と同じではありません。
...ただし、実際には、それらの一般的な使用法はpublic-static
メソッドに類似していると見なすことができます。
public-staticメンバーと比較して、プロトタイプ化されたプロパティの方が似ています。
それらは同じように呼ばれるわけではありませんが、「クラス」/コンストラクター上にあり、各インスタンスにアクセス可能であり、これらの値を共有値として変更し、他のすべてのインスタンスに影響を与えるメソッドまたはプロパティの概念は非常に重要です、非常によく似ていpublic static
ます。
ただし、覚えておくべきことが他にもいくつかあります。これは、public static
使用する言語に応じて、機能と見なすものと一致します...
もちろん、最も重要なのは、プロトタイプ化された関数の観点から、パブリックにアクセスできないプライベート/インスタンス固有の状態にまったくアクセスできないことです。したがって、プライベートメソッドを呼び出したり、インスタンス固有の変数(パブリックメンバーではない)を使用したりできる関数
の処理に慣れている場合は、120%運が悪いことになります。public static
考慮すべき2番目のことは、クロージャーを介してパブリックおよびプライベートの静的メンバー/メソッドに相当するものを作成することもできるということです。
var Class = (function () {
var private_static_method = function () {},
public_static_method = function () {},
private_static_property = 1,
public_static_property = 2,
class_constructor = function (a, b) {
var private_method = function () {},
public_method = function () {},
public_property = a,
private_property = b,
public_interface = {
method : public_method,
property : public_property
};
return public_interface;
};
class_constructor.method = public_static_method;
class_constructor.property = public_static_property;
return class_constructor;
}());
これで、クロージャを通じて、すべてのプライベートインスタンスがアクセスできる「プライベート静的」関数とプロパティが得られました。
コンストラクター関数のメソッドとして追加したパブリック静的メソッドがあります。次に、を使用せず、必要なものをアタッチする新しいオブジェクト()を作成する
コンストラクター関数を取得しました。
インスタンスのパブリックメソッドはすべて、クロージャのおかげで、そのインスタンスのプライベートメソッド/変数にアクセスできます。 new
public_interface
これは、従来のクラスとは何の関係もありません。
しかし、純粋にクロージャーベースの観点からすると、これは、クラスをJSに押し込もうとせずに、これらのアクセスタイプをすべて再現する方法です。