JavaScriptプログラミングの詳細は初めてノートを読みます.

8846 ワード

1.1値
JavaScriptには6種類の基本タイプの値があります.number、string、Boolean、object、functionとundefined.
1.3.2 promptとconfirm
ブラウザが提供する標準的な環境にはポップアップウィンドウの関数がもっと多く含まれています.confirm関数を使ってユーザーにOK/キャンセルの問題を選択させることができます.この関数はブール値を返します.ユーザーがOKをクリックしたら、trueに戻ります.キャンセルをクリックするとfalseに戻ります.
prompt関数はオープンな問題を問い合わせるために使用できます.最初のパラメータはこの問題です.第二のパラメータは、ユーザがテキストを入力する必要がある先頭部分であり、会話ウィンドウにテキストを入力することができます.この関数は文字列として返されます.
 
1.4プログラム構造
Number関数は、ユーザーが入力した値を数字に変換します.似たような関数はStringとBooleanがあります.
 
2.1.5函数
前の章で述べたように、JavaScriptの中のすべてのものは値で、function関数を含みます.すなわち定義された関数名は、通常の変数のように使用され、その内容は、表現に伝達され、より大きな表現に使用されます.次の例では、aがfalse値でない場合、プログラムは変数aの関数を呼び出します.aがfalse値である場合、コードはb関数を呼び出します.
var a = null;
function b() { return "B"; }
(a || b)();
(a|𞓜b)この奇妙な表現は、「呼び出し時にパラメータを渡さない」オペレータ(a 124; 124; 124; 124; b)に適用され、この表現が関数でないと呼び出しにエラーが発生します.関数が生成されると、この例のように結果値が呼び出されます.
名前のない関数値だけが必要であれば、Functionキーは式として使用できます.
var a = null;
(a || function(){ return "B"; })();
匿名表現function(){return''B'}は関数値を一つだけ作成しました.
 
2.2.3再帰
多くの開発者の基本原則としては、プログラムの進行が遅いことを証明する時だけ、効率の問題に関心を持ちます.このような状況が発生すると、占有時間が最も多いコードを探し出し、その後、これらの美しいコードを効率的なコードに変えます.
 
3.2基本データ構造
オブジェクトの属性は、自由に追加、削除、変更できます.相手が演じる主要な役割は、実は属性と対象の集合である.
var cat={カラー:「gray」、name:「Spot」、size:46}
属性名が合法的な変数名でない場合は、ポイント法でアクセスできません.中かっこのみでアクセスできます.
in操作子は、ある名前がセット内にあるかどうかを判断するために使用されます.
対象を比較する場合、JavaScriptの==操作子は与えられた二つの値が完全に同じである場合にのみtrueに戻ります.同じ内容の2つの異なるオブジェクトを比較するとfalseに戻ります.(オブジェクト=ポインタ?)
配列は中かっこ([])を使って作成できます.var mail Archive=[mail one],[mail two],[mail three]
join()メソッドは文字列配列を文字列に変換し、入力されたパラメータを配列の各値を接続するために使用します.
 
3.3 Emilyおばさんの猫に関する問題を解決します.
SPlit()法は、与えられた文字列をパラメータとして配列に分解し、どの位置で文字列を分解するかを決定する.
slice()メソッドは、最初のパラメータがある位置から2番目のパラメータがある位置まで、一部の文字列をコピーするために使用されます.
charAt()メソッドは、ある文字列から指定された位置の文字を取得するために使用されます.
indexOf()メソッドは、文字が最初に現れた位置または文字列のサブストリングを切り取ることができます.
 
3.3.6日付表示
月の数字は0から11までです.
getFulYear()、getMonth()、getDate()、getMinutes()、get Seconds()、getDay()、getTime()
二つの日付オブジェクトが等しいかどうかをテストします.次のコードが使えます.
 var wende1 = new Date(1989, 10, 9),
     wende2 = new Date(1989, 10, 9);
 wende1.getTime() == wende2.getTime();
 
4.2.2異常
throwは異常を引き起こすキーワードです.キーワードtryは異常障害を設定するために使用されます.コードブロック内のコードが異常を起こすと、catchコードブロックが実行され、実行時に、catchの後の変数がこの異常値を持ちます.
異常な利点:エラーの発生点とエラーの処理点でのみエラー処理コードが必要です.両者の間の関数はこれらを無視できる.
try文の後にもfinallyキーワードが付けられます.何があってもtryブロックのコードを実行してみたらこれらのコードが実行されます.関数がクリアする必要がある場合、コードは通常finallyブロックに入れます.
function forEach(array, action) {
  for (var i=0; i)
    action(array[i]);
}

function sum(numbers) {
  var total = 0;
  forEach(numbers, function(number){
    total += number;
  });
  return total;
}

print(sum([1, 2, 3, 4]));
他の関数を操作する関数を高次関数と呼びます.
 
5.2.1変更関数
他の有用な高次関数タイプは、導入された関数値を修正する.
function negate(func) {
  return function(x) {
    return !func(x);
  };
}

var isNotNaN = negate(isNaN);
 
5.2.2規約関数
sum関数は、実際にはアルゴリズムの変形体であり、このアルゴリズムは概して規約(reduce)と呼ばれている.
function reduce(combine, base, array) {
  forEach(array, function(element){
    base = combine(base, element);
  });
  return base;
}

function add(a, b) {
  return a+b;
}

function sum(numbers) {
  return reduce(add, 0, numbers);
}
 
5.2.3マッピング配列
もう一つの配列に関連する「基本アルゴリズム」をマッピング(map)と呼ぶ.配列を巡回し、各要素に関数を適用することができます.しかし、関数の戻り値を捨てずに、これらの戻り値を使って新しい配列を再構築します.
function map(func, array) {
  var result = [];
  forEach(array, function(element) {
    result.push(func(element));
  });
  return result;
}
 
第6章対象向けプログラミング
6.1.1定義方法
1.オブジェクトの追加方法の一つは、下記のコードに示すように、関数値を簡単に付加することです.
var rabbit = {};
rabbit.speak = function(line) {
  print("The rabbit says '", line, "'");
};

rabbit.speak("I'm alive.")
 
2.オブジェクトは属性と方法の集合と見なすことができ、したがって、声明の集合としてオブジェクトを宣言することができる. 
function speak(line) {
  alert("The " + this.adjective + " rabbit says '" + line + "'");
}

var whiteRabbit = {adjective:"white", speak:speak};
var fatRabbit = {adjective:"fat", speak:speak};

whiteRabbit.speak("Oh my ears and whiskers, how late it's getting!");
fatRabbit.speak("I could sure use a carrot right now.");
speakに訪問してみると、これは確かに対象です.しかし、関数とオブジェクトの結合度が低すぎます.
 
アプリ()方法とコール方法
1.apply方法の最初のパラメータは、関数が適用されるオブジェクトを指定するために使用されます.次のようにfatRabbitにspeakを呼び出すこともできます.
speak.apply(fatRabbit, ["Yum."]);
appy(Object,args)は、2番目のパラメータはspeak()のパラメータ配列(ここのspeak()関数は1つのパラメータしか受信しません).
 2.call方法は、1つの配列として使用することなく、それぞれのパラメータを関数に与えることができる.
speak.call(fatRabbit, "Yum.");
3.複数のパラメータがある関数については、コールとアプリを次のように使うことができます.
function run(from, to) {
  alert("The " + this.adjective + " rabbit runs from " + from + " to " + to + " .");
}
run.apply(whiteRabbit, ["A", "B"]);
run.call(fatRabbit, "the cupboard", "the fridge");
 
6.1.3原型から構築する
なぜnewキーワードを使わなければならないですか?結局、私達はこのように書くだけです.
function makeRabbit(adjective) {
  return {
    adjective: adjective,
    speak: function(line) {/*  */}
  };
}
var blackRabbit = makeRabbit("black");
しかし、両者は全く同じではない.newは他にもいくつかの役割を果たしています.まず、キラビットは、この属性を作成するRabbit関数を指すconstructor属性を持っています.blackRabbitにもこのような属性がありますが、Object関数を指します.
constructorのプロパティはどこから来ましたか?これはラビット属性の一部です.ちょっと迷ってしまいましたが、モデルはJavaScript対象の働き方の中で非常に重要な部分です.各オブジェクトは一つのプロトタイプに基づいており、そのプロトタイプは一連の基本的な特性を与える.これまで使用されてきた簡単なオブジェクトはすべて基本的なプロトタイプに基づいており、このプロトタイプはObjectコンストラクタに関連しているので、すべてのオブジェクトがこのプロトタイプを共有している.(ちなみに、入力{}はnew Object().に相当します.
 
転載先:https://www.cnblogs.com/linxd/p/4392552.html