ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript がオブジェクト指向言語であるかどうかについて議論する_JavaScript のスキル

JavaScript がオブジェクト指向言語であるかどうかについて議論する_JavaScript のスキル

WBOY
WBOYオリジナル
2016-05-16 17:13:301253ブラウズ

1 データを含めることができるオブジェクトとデータを処理するメソッドがあります。オブジェクトには他のオブジェクトを含めることができます。 (JavaScript 2.0 が実際に実装される前は) クラスはありませんが、変数やメソッドのコンテナーやロールとして機能するなど、クラスで実行できることを実行できるコンストラクターがあります。クラスベースの継承はありませんが、プロトタイプベースの継承はあります。オブジェクト システムを構築する 2 つの方法は、継承によるものと集約によるものです。 JavaScript には両方があります。

2 JavaScript は情報を隠蔽できないため、真のオブジェクト指向ではないというコメントもあります。つまり、オブジェクトはプライベート変数やメソッドを持つことができません。すべてのメンバーはパブリックです。しかしその後、JavaScript オブジェクトがプライベート変数とプライベート メソッドを持つことができることを誰かが証明しました。 JavaScript は継承を提供できないという批判もありますが、JavaScript は従来の継承をサポートできるだけでなく、他のコード再利用パターンも適用できることを誰かが証明しました。

3 JavaScript がオブジェクトベースの言語であると言うのは正しく、やや保守的な判断ですが、JavaScript がオブジェクト指向ではないというのは私の考えでは間違っています。実際、JavaScript はそれを証明する十分な理由があります。 JavaScript はオブジェクト指向言語ですが、従来のクラスベースのオブジェクト指向と比較して、JavaScript には独自の特徴があります。この独自性をプロトタイプベースのオブジェクト指向と呼びます。

-------------------------------------------------

js は C や C# とは異なり、関数メソッドのオーバーロードをサポートしていないため、後で同じ名前のメソッドを作成すると上書きされます。デフォルトでは前のメソッドです。!この状況は PHP の場合と同じです!

関数のオーバーロードをサポートする C# やその他の言語とは異なり、異なるパラメーターと戻り値に応じて異なるメソッドが呼び出されます。

JS がオブジェクト指向であるかどうかについては、クラス、メソッド、属性として記述することもできます。たとえば、

var cls= です。 {
my:{ a:0},
init:function()
{
alert(this.my.a);
}
};
ウィンドウ。 onload=function()
{
cls.init();
}

cls.init();

を呼び出す

これは彼のクラスですが、多くのオブジェクト指向機能が欠けています。したがって、完全なオブジェクト指向ではないことは明らかです。

オブジェクト指向は単なる考え方であり、問​​題を解決する方法です。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。