「JavaScript高級プログラム設計」ノート(1)
4289 ワード
データの種類
5種類の単純データタイプ(基本データタイプ):Unidefined、Null、Boolean、Number、Steringの1種類の複雑なデータタイプ:Object
変数、スコープ、メモリの問題
関数のパラメータは値で伝達されます.*ECMAScript関数のパラメータを局所変数として想像できます.*例1:
*typeof**
ブロックレベルのスコープがありません.
Arayタイプ
toLocale String()、toString()とvalueOf()メソッドjin()
スタック方法
push()、pop()
キューの使い方
push()、shift()//取出第一項unshift()//追加第一項、pop()逆方向
並べ替え
reverse()//逆順、sort()//値の昇順比較:
splice()削除:任意の数の項目を削除してもいいです.2つのパラメータを指定してください.削除する最初の項目の位置と削除するエントリの数.例えば、splice(0,2)は、配列の最初の2つを削除します. 挿入:指定された位置に任意の数の項目を挿入することができます.3つのパラメータが必要です.開始位置、0(削除すべき項数)、挿入する項目.複数の項目を挿入すると、第四、第五、ひいては任意の項目に入ることができます.例えば、splice(2,0,「red」,「green」)は、現在の配列の位置2から文字列「red」と「green」を挿入します. の代わりに、指定された位置に任意の数の項目を挿入し、任意の数の項目を同時に削除することができます.3つのパラメータを指定するだけで、開始位置、削除すべき件数、挿入するべき任意の数の項目を指定します.挿入された項の数は、削除された項の数に等しい必要はありません.例えば、splice(2,1,「red」,「green」)は、現在の配列位置2の項目を削除し、位置2から文字列「red」と「green」を挿入します. 位置方法(ES 5追加)
indexOf()
反復方法(ES 5追加) every():行列内の各項目に対して関数を実行し、各項目に対してtrueを返すとtrueに戻ります. **filter()*:配列内の各動作に与えられた関数を返します.この関数はtrueの項目からなる行列を返します. forEach()は、配列内の各項目に対して与えられた関数を実行します.この方法は戻り値がない map():配列内の各項目に対して与えられた関数を実行し、各関数呼び出しの結果からなる行列を返します. some():配列内の各項目に対して関数を実行します.関数がどれかの項目に対してtrueを返すと、trueに戻ります.以上の方法は、配列に含まれる値を変更しません.* 正規化方法(ES 5追加)
reduce()とreduceRight()の反復配列のすべての項目は、最終的に返される値を構築します.
関数はオブジェクトであり、関数名は、ポインタが、括弧を持たない関数名を使用して、関数ポインタにアクセスします.関数式については、解像度がそのコード行に実行されるまで、本当に解釈されて実行される必要があります.例:伝参 拡張機能領域
5種類の単純データタイプ(基本データタイプ):Unidefined、Null、Boolean、Number、Steringの1種類の複雑なデータタイプ:Object
変数、スコープ、メモリの問題
関数のパラメータは値で伝達されます.*ECMAScript関数のパラメータを局所変数として想像できます.*例1:
function addTen(num) {
num += 10;
return num; }
var count = 20;
var result = addTen(count);
alert(count); //20,
alert(result); //30
例2:function setName(obj) {
obj.name = "Nicholas"; }
var person = new Object();
setName(person);
alert(person.name); //"Nicholas"
例3:function setName(obj) {
obj.name = "Nicholas";
obj = new Object();
obj.name = "Greg"; }
var person = new Object();
setName(person);
alert(person.name); //"Nicholas"
検出タイプ*typeof**
var n == null;
alert(typeof n); //object
instance ofalert(colors instanceof Array); // colors Array ?```
##
function buildUrl(){var qs="?debug=true";with(location){var url=href+qs]//実際にはlocation.href}returnurlを引用しました.ブロックレベルのスコープがありません.
for (var i=0; i < 10; i++){
doSomething(i); }
alert(i); //10
参照の種類Arayタイプ
toLocale String()、toString()とvalueOf()メソッドjin()
スタック方法
push()、pop()
キューの使い方
push()、shift()//取出第一項unshift()//追加第一項、pop()逆方向
並べ替え
reverse()//逆順、sort()//値の昇順比較:
funtion compare(val1,val2){
return val2 - val1;
}
var values = [0, 1, 5, 10, 15];
values.sort(compare);
alert(values); // 15,10,5,1,0
操作方法splice()
indexOf()
反復方法(ES 5追加)
reduce()とreduceRight()の反復配列のすべての項目は、最終的に返される値を構築します.
var values = [1,2,3,4,5];
var sum = values.reduce(function(prev, cur, index, array){
return prev + cur;
});
alert(sum); //15
関数の種類関数はオブジェクトであり、関数名は、ポインタが、括弧を持たない関数名を使用して、関数ポインタにアクセスします.関数式については、解像度がそのコード行に実行されるまで、本当に解釈されて実行される必要があります.例:
alert(sum(10,10));
function sum(num1, num2){
return num1 + num2;
}
//
alert(sum(10,10));
var sum = function(num1, num2){
return num1 + num2;
};
//
行列は、オブジェクトの属性に従って並べ替えられます.function createComparisonFunction(propertyName) {
return function(object1, object2){
var value1 = object1[propertyName];
var value2 = object2[propertyName];
if (value1 < value2){
return -1;
} else if (value1 > value2){
return 1;
} else {
return 0;
}
}; }
var data = [{name: "Zachary", age: 28}, {name: "Nicholas", age: 29}];
data.sort(createComparisonFunction("name"));
alert(data[0].name); //Nicholas
data.sort(createComparisonFunction("age"));
alert(data[0].name); //Zachary
apply()とcall()window.color = "red";
var o = { color: "blue" };
function sayColor(){
alert(this.color);
}
sayColor(); //red
sayColor.call(this); //red
sayColor.call(window); //red
sayColor.call(o); //blue
bind()方法は、bind()関数に伝える値(ES 5追加)に結合される関数の例を作成します.window.color = "red";
var o = { color: "blue" };
function sayColor(){
alert(this.color);
}
var objectSayColor = sayColor.bind(o);
objectSayColor(); //blue