対象に向けるJavascriptの一つ(Javascriptを初めて知っている)

5662 ワード

1.Javascriptの最大の特徴は柔軟性にあります.フロントエンドの開発者としては、関数式のプログラミングスタイルを採用することもできますし、より複雑なオブジェクト指向のプログラミングスタイルを採用することもできます.どのスタイルを採用しても、非常に役に立つ仕事ができます.したがって、Javascriptはプロセスに向けた言語であり、同時に顔向けの対象言語でもあり、さらに対象言語に向けたプログラミングモードや慣用法を模倣することができる.アニメーションの起動と停止を一例で説明します.
関数式のプログラミングスタイルに慣れたら、コードは次のようになります.
 
  
function startAnimation() {
//
}
function stopAnimation() {
//
}
この方法は簡単ですが、保存状態や内部の状態だけを操作するアニメーションオブジェクトは作成できません.次のクラスを定義します.
 
  
var Animation = function() {
//
};
Animation.prototype.start = function() {
//
};
Animation.prototype.stop = function() {
//
};
/* */
var anim = new Animation();
anim.start();
anim.stop();
クラスの定義を声明にパッケージしたい場合、コードは以下の通りです.
 
  
var Animation = function() {
//
};
Animation.prototype = {
start: function(){
//
},
stop: function(){
//
}
};
このように対象に向かうプログラマを見覚えのあるようにして、もっと複雑な書き方を試してみましょう.
 
  
Function.prototype.method = function(name, fn){
this.prototype[name] = fn;
}
var Animation = function() {
//
};
Animation.method("start", function(){
//
});
Animation.method("stop", function(){
//
});
新しい方法を追加するためのFunctionクラスのための方法methodを拡張した.name代表関数名、fn代表関数の具体的な実装.この表記に基づいて、関数にチェーンコールをサポートさせることができます.
 
  
Function.prototype.method = function(name, fn){
this.prototype[name] = fn;
return this;
}
var Animation = function() {
//
};
Animation.method("start", function(){
//
}).method("stop", function(){
//
});
これまで5つの異なるプログラミングスタイルを見ましたが、コード量、エンコード効率、実行性能が違います.現在のプロジェクトに最適なプログラミングスタイルを選んで作業できます.
2.Javascriptは弱いタイプの言語です.変数を宣言するときは、タイプを指定する必要はありませんが、タイプがないという意味ではありません.Javascriptは3つの基本的なタイプを含んでいます.ブール型、数値型、文字列タイプ、さらにオブジェクトタイプと関数タイプが含まれています.最後には空タイプと未定義タイプが含まれています.基本タイプは値で渡され、他のタイプは参照で渡されます.変数の割当値に応じてタイプを変えることができます.基本タイプの間で相互に変換できます.toString()は、数値またはブール値を文字列に変換し、パーrseInt()とパーパーパーミッション()は文字列を数値に変換することができ、2つの「非」動作は文字列または数値をブール値に変換することができる.
3.Javascript関数は「一等」の対象です.関数は変数に格納できます.パラメータとして他の関数に伝えることができます.戻り値として他の関数から流すこともできますし、実行時に構成することもできます.関数が対応する時、極めて大きな柔軟性と強い表現能力をもたらします.これらは対象に向けた基礎を構築するのです.関数名がなく、変数にも割り当てられます.例をあげて説明します.
 
  
(function(){
var a = 10;
var b = 5;
alert(a * b);// 50
})();//
すぐに実行できるのは、関数宣言後の括弧のペアです.しかし、括弧の中には一つのものもなく、完全にそうではないことが分かりました.
 
  
(function(a, b){
alert(a * b);// 50
})(10, 5);//
この匿名関数は前のものと同じです.変数は関数内で宣言されていないだけでなく、外部から直接伝わってきます.実は、この匿名関数には戻り値があり、ある変数に割り当てられます.
 
  
var c = (function(a, b){
return a * b;// 50
})(10, 5);//
alert(c);//50
匿名関数の最大の用途は、クローズドを作成することである.クローズドとは、保護された変数空間で、埋め込み関数によって生成されます.Javascriptは関数レベルのスコープを持っているので、すなわち関数内部に定義された変数は関数の外部ではアクセスできません.関数は呼び出しのスコープではなく、定義されたスコープ内でのみ実行されます.これにより、匿名関数に変数を保護することができます.例えば、以下の方法でプライベート変数を作成できます.
 
  
var c;
(function(){
var a = 10;
var b = 5;
c = function(){
return a * b;// 50
}
})();
c();//c a,b,
4.Javascriptの対象は「変わりやすい」です.すべては対象です.3つの基本タイプを除いて、すべてのオブジェクトは変わりやすいです.これは他の言語が存在しない技術を使うことができるという意味です.関数の属性を動的に追加します.
 
  
function displayError(error){
displayError.numTimesExecuted++;
alert(error);
}
displayError.numTimesExecuted = 0;//
クラスのインスタンスを作成した後にプロトタイプ機構を利用して動的に追加することができます.このときは、定義されたオブジェクトに対してまだ有効です.たとえば:
 
  
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.prototype = {
getName: function() {
return this.name;
},
getAge: function() {
return this.age;
}
};
//
var miracle = new Person("Miracle", 28);
var mike = new Person("Mike", 32);
//
Person.prototype.getGreeting = function() {
return "Hello " + this.getName() + "!";
};
//displayGreeting() Miracle
miracle.displayGreeting = function() {
alert(this.getGreeting());
}
オブジェクトの易変性に関する反射(いわゆる「内省」ともいうことができます)は、実行時にオブジェクトの属性や方法をチェックし、これらの情報を利用してクラスを具体化したり、実行方法を実行したりします.開発時に名前を知る必要はありません.対象となるこの二つの大きな特性により、対象言語に対する高度な特性を完全に模倣することができますが、Javascriptではどのオブジェクトも実行時に変更可能です.
5.Javascriptは「継承」を実現する天分を持っています.ここで簡単に説明します.Javascriptは「類式」の継承と対象に基づく原型式の継承を含めています.この話題は次号の文章で詳しく述べます.
最後にまとめてみます.Javascriptという一見プロセス的な言語を対象やデザインモードに向けた考えで処理するのには、何かメリットがありますか?以下の点をまとめました.参考にしてください.
(1)保守性.モジュール間の結合性を低減するのに役立ち、プロジェクト中のコードはモジュールと機能職責によって区別され得る.
(2)交流しやすい.大きなチームにとっては、設計モードの簡単な用語で、あなたが担当している機能モジュールを高度に要約することができます.チームの他のメンバーがあまりにも多くの細部に注目する必要はありません.
(3).性能の向上.モードを利用すると、クライアントコードの量を減らしながら、プログラムの実行速度を向上させることができます.
もちろん、有利は弊害があります.弊害は:
(1)複雑さが比較的高い.維持可能性を得るための代価は、コードの高さ再構成とモジュール化によって分類されています.初心者にとっては、すぐに適応するのは難しいです.
(2)一部のモードは、逆に性能を低下させる.しかし、このようなドラッグはあなたのプロジェクトの需要に依存しています.些細なことかもしれません.
そのため、デザインモードの応用シーンを理解し、シーンこそデザインモードへの真の意味での応用を学ぶことをお勧めします.盲目的な応用と間違った場面は誤用です.使わないほうがいいです.