Java C ++などの従来のオブジェクト指向の言語を学習した後、JavaScript、特にJavaScriptのいわゆるオブジェクト関数に転送すると、少し不快になります。したがって、学習と理解を促進するために、以下の概念的なことを以下に整理し、Javaオブジェクト指向の知識と組み合わせて説明します。
まずいくつかの概念を理解しましょう:
1.まず第一に、オブジェクトはecmascriptで何を参照していますか? ECMAScriptには、未定義、null、boolean、number、stringの5つの簡単なデータ型があります。複雑なデータ型、つまりオブジェクトもあります。
2。参照タイプ - Javaのクラスの概念
参照型値--- Javaのオブジェクトの概念
3。関数---- Javaのメソッドの概念
4.Var ---変数のオペレーターを宣言します。 JS変数は緩いタイプであるため、ゆるいことは、データを保存するために使用できることを意味します。変数はプレースホルダーを表すためにのみ使用されるため、変数はstring、int、およびJust varを指定する必要はありません。オブジェクトはvarで宣言できることに注意してください。
5.Object()、何がJSのオブジェクトであるJavaのオブジェクトのコンストラクターです。
物体
JSは、プロパティとメソッドを動的に追加できます。
たとえば、オブジェクトインスタンスを作成します
var obj = new Object();
変数OBJは、新しいオブジェクトのオブジェクトです()。
次:
var obj = new object(); obj.name = 'zeng'; obj.age = 12; obj.fun = function(){console.log(this.name+this.age);}しかし、これはそれほどカプセル化されていないため、オブジェクトの文字表現はより頻繁に使用されます
var obj = {name: 'zeng'、age:12、fun:function(){console.log(this.name+this.age); }} obj.fun(); //印刷:Zeng12オブジェクトプロパティへのアクセス:
1.ブラケットを使用します
console.log(obj["name"]);
2。ポイントを使用して、この方法を使用することをお勧めします
console.log(obj.name );
関数
関数は、あらゆる言語の重要な部分です。関数はJSと呼ばれます。また、それらがJavaメソッドとC言語関数であることを理解することもできます。ただし、宣言と使用に関しては、JSの機能は非常に異なる場合があります。
関数の例:
function fun(){return "example";} console.log(fun()); //出力:「例」それも可能です:
var fun = function(){return "式を使用して関数を作成"}; console.log(fun()); //出力:「式を使用して関数を作成します」上記の例では、関数には関数名がなく、変数名が1つだけであり、式の最後に別のものがあることがわかります。セミコロン、
変数を宣言する式として理解することができます。他の変数の宣言は次のように書かれています:
var name = "Zeng"; //可変名とセミコロンがあります
パラメーターを使用して例を挙げましょう。
function fun(){return arguments [0] + arguments [1] + arguments [2];} console.log(fun( "this is"、 "a"、 "example")); //出力:「これは例です」少し奇妙ではありませんか?まず、作成した関数にはパラメーターがありません。呼び出されたときにパラメーターが与えられ、パラメーターを取得して関数で返すことができます。
実際、ここでは、JS関数がいくつかのパラメーターを渡すことを気にしないことも、パラメーターの種類を気にしないことを指摘する必要があります。その理由は、関数の内部受信パラメーターが配列に保存されているためです!
配列は上記の引数です。もちろん、配列はいくつかのパラメーターを渡すことを気にしません。パラメーターがある場合は1つ追加します。パラメーターがない場合は、nullになります。
この機能を例として使用できます。
模倣方法の過負荷 - さまざまな反応を実行するためにさまざまなパラメーターを使用します
function fun(){if(arguments.length == 1){return arguments [0]*10; } if(arguments.length == 2){return(arguments [0]+arguments [1])*10; } return 10;} console.log(fun(11,111)); // 1220を返します! ! ! !過負荷なし:
上記の例は、模倣関数の過負荷です。なぜ私はそれを模倣する必要があるのですか?まもなく異なるパラメーターを使用していくつかの関数を作成できます。
function fun(num1){return "1つのパラメーターのみ"} function fun(num1、num2){"return" 2つのパラメーターで楽しい ";} console.log(fun(11)); //出力「2つのパラメーターを使用した楽しい」それは明らかに1つのパラメーターを持つ関数と呼ばれますが、実際には2つのパラメーターで実行されます。理由:JSは同じ名前の2つの関数を定義し、名前は後で定義された関数にのみ属します! ! !したがって、JSにはオーバーロード機能はありません。
関数名はポインターです。
var fun = function(num1、num2){return num1+num2;}; var new_fun = fun; fun = null; //関数をnullconsole.log(new_fun(10,20))に設定します。 //出力:30Console.log(Fun(10,20)); //例外:楽しいことは機能ではありませんfun = null;この前にvar new_fun = fun;つまり、ポインターはnew_funも指しているため、new_fun()関数はまだ実行でき、関数本文は無効になりません
関数は、値として使用することもできます。
function add(fun、num){return fun(num);} function add_10(num){return num+10;} console.log(add(add_10,200)); //出力:210次のように説明できます。
関数add(function、parameter){return function(passed parameter);}関数のarguments.callee
これが再帰的な例です
function fun(num){if(num <= 1){console.log(num);返品1; } else {console.log(num); num * arguments.callee(num-1); }} console.log(fun(3)); //出力6