ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript コンストラクターの分析

JavaScript コンストラクターの分析

高洛峰
高洛峰オリジナル
2016-11-26 14:42:551133ブラウズ

コンストラクターの原理
JavaScript言語はオブジェクト指向言語ですが、JavaScriptにはクラスという概念がありません。したがって、JavaScript はコンストラクターを使用してクラスの効果をシミュレートします。つまり、関数を通じてオブジェクトを作成します。これは、関数が JavaScript において非常に重要な役割を果たしているということも証明しています。例: b Var Book = Function (name, Price) {

this.Name = name;

this.price = 価格
}}

var java = New Book ('Master Java', 82); new キーワードを使用してコンストラクターを呼び出すと、実行コンテキストがグローバル変数オブジェクト (ウィンドウ) から、新しく生成されたインスタンスを表す空のコンテキストに変わります。したがって、 this キーワードは現在作成されているインスタンスを指します

デフォルトでは、コンストラクターで何も返されない場合、this----現在作成中のオブジェクトである現在のコンテキストが返されます。それ以外の場合は、非プリミティブ型の値が返されます。通常の関数は、明確な戻り値がない場合、unknown を返します。


コンストラクターをシミュレートしてオブジェクトを作成する
実際、new を使用してオブジェクトを作成するプロセスは、コードを使用してオブジェクトの作成方法をシミュレートできます。

var Book = function(name) {

this. name = name;
};

//通常の使い方
var java = new Book('Master Java');
python.__proto__ = 本;
Book.call(python, 'Master Python');

を呼び出しますコンストラクターを通常の関数として使用する
実際、コンストラクターは通常の関数であり、var result = Book(); などの通常の関数として呼び出すことができますが、もちろん結果は未定義です。違いは、関数内の this のポインタにあります。上記のコンストラクターを再変更してみましょう:


var Book = function(name, Price) {
this.name = name;
this.price = Price;
if (this == window) {
return 'name = ' + name + ", 価格 = + 価格;
}}}

varress = book ("java", 100) を実行した結果は、「name = java, Price = 100」となり、var java = new の結果になります。 Book("Java", 100) は新しいオブジェクトを作成することです。 JavaScript に付属するコンストラクターの多くは、通常の関数とコンストラクターの両方として機能します。たとえば、String と Number がコンストラクターとして使用される場合、 var a = new Number(11); var c = new String("hello"); Number は通常の関数として使用されますが、型変換にも使用できます。つまり、Number 関数は他の型を数値型に変換でき、String 関数は他の型を文字列に変換できます。


var a = Number('11'); //11
var b = Number('hello'); //NaN
var c = String(11) var d = String(null); null'

概要
関数をコンストラクターとして使用する場合、通常、関数名の最初の文字はコンストラクターであることを示すために大文字で表記され、同時にコンストラクターを呼び出すために new を使用する必要があります。また、コンストラクタを通常の関数として使用することは避けてください。グローバル変数が生成されやすく、戻り値の扱いが下手だとコンストラクタ自体の機能に影響を及ぼしやすいためです。


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