『javascript言語エッセンス』学習ノート1

3573 ワード

前端の学習者として、これまで時間がかかり怠け者の特性のため、jsの特性をよく勉強していなかったが、w 3 cschoolの基礎教程を見ただけで、文法を知ってからjQueryのフレームワークを使っていたので、jsの多くの基礎は全く理解していなかった.この間、jsの基礎はやはりよく勉強しなければならないことを知っていて、後で仕事を探して開発してすべて利益があります.本題に入ると、大部分は本の上のもので、一度読んだ後、自分でもう一度理解を深めたいだけです.第1章はjsの背景を説明し、略.第二章はjs基礎文法で、省略する.
第三章対象を述べる.
1.データ型
まず、jsのデータ型を明確にする必要があります.単純なデータ型(数値、文字列、ブール値、null値、undefined値)、オブジェクト(配列、関数、正規表現、オブジェクト)が含まれます.単純なデータ・オブジェクトの所有方法ですが、可変ではありません.オブジェクトは属性のコンテナで、各属性には属性と値があります.
2.対象字面量
オブジェクトの定義にかっこを使う
<!-- lang: js -->
var stooge = {"first_name":"Jerome","last_name":"Howard"};

3.検索
アクセスオブジェクトは、2つの方法で優先することができる.の表示方法は、コンパクトなため、読みやすさが良い
<!-- lang: js -->
stooge["first_name"];
stooge.first_name;

4.更新
文を割り当てて更新します.以前にそのオブジェクト名がなかったら、既存のオブジェクトに直接拡張されます.
<!-- lang: js -->
stooge["first_name"] = "gao"
stooge.first_name = "gao";

5.参照
オブジェクトは参照によって渡され、コピーされません.
<!-- lang: js -->
var a = {};var b = {};var c = {};//  3       
var a = b = c = {};//a,b,c        

6.原型
各オブジェクトペアは1つのプロトタイプオブジェクトに接続する、オブジェクトの字面量によって作成されたすべてのオブジェクトがObjectに接続される属性を継承することができる.prototype. プロトタイプ接続は値を更新するときにそのオブジェクトのプロトタイプに変更されません.プロトタイプ接続は値を取得するときにのみ使用されます.オブジェクトの属性値を取得しようとすると、そうでなければjsはプロトタイプオブジェクトから属性値を取得しようとします.もしなかったら、その原型からゴールまで探します.prototype.プロトタイプチェーンにまだ存在しない場合はundefinedを返します.この過程を依頼と呼ぶ.
<!-- lang: js -->
var flight.equipment = {
    airline:"Oceanic",
    number:815,
    departure:{
        IATA:"SYD",
        time:"2004-09-22 14:55",
        city:"Sydney"
    },
    arrivak:{
        IATA:"LAX",
        time:"2004-09-23 10:42",
        city:"Sydney"
    }
};

if(typeof Object.beget !== 'function') {
    Object.create = function (o) {
        var F = function () {};
        F.prototype = o;
        return  new F();
    };
}
var another_flight = Object.create(flight);
another_flight['airline'];//"Oceanic"
flight.id = 10086;
another_flight['id'];//10086

7.反射
オブジェクトをチェックし、オブジェクトのプロパティを決定します.
<!-- lang: js -->
typeof flight.number;//"number"
typeof flight.status;//"undefined"
typeof flight.id;//"number"

hasOwnPropertyメソッドではプロトタイプチェーンはチェックされません
<!-- lang: js -->
flight.hasOwnProperty('number');//true
another_flight.hasOwnProperty('number');//false

8.列挙
for in文を使用して、hasOwnPropertyメソッドを使用してフィルタを作成し、typeofを使用して関数を除外します.属性名の出現順序は不確定であり,まず知っている属性名を1つの配列に保存し,順を追って並べ替え,1サイクルで順に並べた属性値を得ることができる.
<!-- lang: js -->
var i;
var properties = {'airline','number','departure','arrivak'};
for (i = 0;i < properties.length; i += 1){
    document.writeln(properties[i] + ':' + another_flight[properties[i]]);
}
//airline:Oceanic number:815 departure:[object Object] arrivak:[object Object]

9.削除
オブジェクトのプロパティを削除すると、プロトタイプチェーンからのプロパティが漏れる可能性があります.
<!-- lang: js -->
another_flight.number = 1000;
another_flight.number;    //1000
delete another_flight.number;
another_flight.number;//815

10.グローバル変数汚染を減らす
グローバル変数を最小化する方法の1つは、アプリケーションに一意のグローバル変数を1つだけ作成することです.
<!-- lang: js -->
var MYAPP = {};
MYAPP.stooge = {
    "id":10101,
    "number":1038
}

このとき、この変数は適用されるコンテナになります.