JavaScript コンストラクター メソッドの欠点は何ですか

WBOY
リリース: 2022-09-30 16:40:55
オリジナル
1154 人が閲覧しました

JavaScript コンストラクターの欠点は、オブジェクトがインスタンス化されるたびにプロパティとメソッドがコピーされることです。インスタンス間に同じメソッドがある場合、コンストラクターで定義されたプロパティとメソッドにはアクセスできますが、ただし、各インスタンスがコピーされるため、システム リソースが無駄に消費されます。

JavaScript コンストラクター メソッドの欠点は何ですか

このチュートリアルの動作環境: Windows 10 システム、JavaScript バージョン 1.8.5、Dell G3 コンピューター。

JavaScript コンストラクター メソッドの欠点は何ですか。

利点は、instanceof を通じてオブジェクトを識別できることです。欠点は、オブジェクトがインスタンス化されるたびに、プロパティとメソッドは再びコピーされます

function CreateObj(uName) { this.userName = uName; this.showUserName = function () { return this.userName; } } var obj1 = new CreateObj('ghostwu'); var obj2 = new CreateObj('卫庄'); console.log( obj1.showUserName === obj2.showUserName ); //false
ログイン後にコピー

上記の実行結果から、obj1.showUserName と obj.showUserName が同じではないことがわかります [js では、参照型はアドレスを比較し、関数は参照型] が 2 つあります。

のメモリアドレスは、各オブジェクトの属性が異なるため問題ありませんが、メソッドは同じコードを実行するため、必要はありませんコピーするには複数のコピーが存在し、メモリを無駄にします。これは欠点です。

拡張知識

コンストラクター: 関数を使用して初期化する場合(new 演算子を使用して) 新しく作成されたオブジェクトを呼びます。コンストラクター (constructor)

function Person(){ this.name = "zqq"; this.age = 28; } var p = new Person();
ログイン後にコピー

コンストラクターが new (実行 var p = new Person()) で呼び出されると、内部で次のことが起こります。関数:

1。空のオブジェクト

var p = {};
ログイン後にコピー

2 を作成します。この変数は、オブジェクト p

Person.call(p)
ログイン後にコピー

3 を指します。p は、コンストラクター Person() のプロトタイプを継承します。

p.__proto__ = Person.prototype
ログイン後にコピー

4. コンストラクター Person() コードを実行します。

コンストラクターと通常の関数の違い:

1. コンストラクターは、次のメソッドを使用して呼び出されます。 new キーワード; 通常の関数は new キーワードでは呼び出されません;

var p = new Person(); var p = Person();
ログイン後にコピー

2. this キーワードはコンストラクター内で使用できますが、これはウィンドウを指しているため、通常の関数内で使用することはお勧めできません。現時点ではグローバル オブジェクトなので、一部のグローバル変数または関数が意図せずウィンドウに追加されることになります

コンストラクター内では、これは構築された新しいオブジェクトを指します

##通常の関数内では、これは次を指しますウィンドウ グローバル オブジェクト

#3. コンストラクターはデフォルトでは戻り値を返しません。通常の関数には通常、戻り値があります。

コンストラクターはデフォルトでこれ (新しいインスタンス オブジェクト) を返します。

通常の関数は戻り値がない場合はunknownを返します

if returnを使用した場合は戻り値の種類によって戻り値が異なります

[関連する推奨事項:

JavaScript ビデオ チュートリアルWeb フロントエンド]

以上がJavaScript コンストラクター メソッドの欠点は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!