jsは深く勉強します.

7210 ワード

目次
  • 構築関数を用いてオブジェクトを作成する
  • 構築関数プロトタイプ
  • オブジェクトの原型プロト.
  • constructor構造関数
  • JavaScriptのメンバー検索メカニズム(ルール)
  • 元のオブジェクトのthisは
  • を指します.
  • 原型オブジェクトのアプリケーション拡張内蔵オブジェクト方法
  • callメソッドの役割
  • オブジェクト向けプログラミングOOP
  • ES 5の新規作成方法
  • forEach()
  • filter()
  • some()
  • trim
  • Object.defineProperty()
  • Object.keys()
  • 立体関数を使ってオブジェクトを作成します.
    コンストラクタは、オブジェクトを初期化するために主に使用される特殊な関数であり、オブジェクトメンバー変数に初期値を割り当て、newと一緒に使用されます.これらは対象の中のいくつかの共通の属性と方法を抽出して、この関数の中に入れます.
    new実行時には4つのことをする:
    1.メモリに新しい空のオブジェクトを作成します.2.この新しいオブジェクトにthisを向けるようにします.3.コンストラクションのコードを実行して、この新しいオブジェクトに属性と方法を追加します.4.この新しいオブジェクトに戻ります.
    // 1.  new Object()    
    var obj = new Object();
    // 2.           
    var obj2 = {}
    // 3.          
    function Star(name, age) {
        this.name = name;
        this.age = age;
        this.sing = function () {
            console.log('  ' + this.name + '
    :' + this.age) } } var obj3 = new Star('me', 11); obj3.sing(); // console.log(obj3.name); // , obj3.age = 1111; obj3.sing();
    コンストラクタプロトタイプ
    構造関数はプロトタイプによって割り当てられた関数はすべてのオブジェクトが共有するJavaScriptで規定されています.各構造関数はプロトタイプ属性によって別のオブジェクトを指します.このプロトタイプはオブジェクトです.このオブジェクトの属性と方法はすべて構造関数によって所有されます.これらの不変の方法を直接プロトタイプオブジェクトに定義することができ、このようにすべてのオブジェクトのインスタンスがこれらの方法を共有することができる.
    function Star(name, age) {
        this.name = name;
        this.age = age;
    };
    Star.prototype.sing = function () {
        console.log('  ' + this.name + '
    :' + this.age); } var obj3 = new Star('me', 11); var obj4 = new Star('who', 12); obj3.sing(); // me // :11 obj4.sing(); // who // :12 console.log(' \t', obj3.sing == obj4.sing); //true
    オブジェクトの原型プロト.
    オブジェクトには属性が一つあります.プロト.コンストラクタを指すプロトタイプの原型オブジェクトが、私たちのオブジェクトにコンストラクタプロトタイプの原型オブジェクトの属性と方法を使うことができるのは、オブジェクトにガジェットがあるからです.プロト.原型の存在方法の検索規則:まず自分のオブジェクトにこの方法があるかどうかを見ます.もしあるなら、このオブジェクト上のこの方法を実行します.プロト.プロトタイプのプロトタイプにこの方法を探しに行きます.
  • __プロト.オブジェクトプロトタイプとプロトタイプは等価
  • です.
  • __プロト.オブジェクトプロトタイプの意味は、オブジェクトのルックアップメカニズムのための方法、またはルートを提供することにあるが、それは非標準的な属性であるため、実際の開発では、この属性を使用することはできません.
    コンストラクタ構造関数
    オブジェクトの原型プロト.構造関数プロトタイプの原型オブジェクトの中に属性constructor属性があります.私たちはコンストラクタと呼びます.コンストラクタ自体に戻ります.constructorは主にこのオブジェクトがどの構造関数に引用されているかを記録するために用いられ、彼は元の構造関数に元のオブジェクトを再び指し示すことができる.
    もし元の原型の対象を修正したら、袁鑫の対象に価値を与えたのは一つの対象です.手動でconstructorを利用して元の構造関数に戻らなければなりません.
    Star.prototype = {
        //     constructor
        constructor: Star,
        sing() {
            console.log('  ' + this.name + '
    :' + this.age); }, movie() { console.log('2 ' + this.name + '
    :' + this.age); } }
    JavaScriptのメンバー検索メカニズム(ルール)
  • 、オブジェクトの属性(方法を含む)にアクセスする場合、まず、オブジェクト自体が
  • かどうかを検索する.
  • もしないならば検索するその原型
  • 原型オブジェクトのプロトタイプ(objectのプロトタイプオブジェクト)をまだ検索していない場合
  • これを類推して、objectまでの
  • を探しています.
    元のオブジェクトのthisを指します.
    function Star(name, age) {
        this.name = name;
        this.age = age;
    }
    var that;
    Star.prototype.sing = function () {
        console.log('    ');
        that = this;
    }
    var a = new Star('me', 111);
    a.sing();
    console.log(that === a);
    console.log(that)
    
    プロトタイプオブジェクトの応用拡張内蔵オブジェクト方法
    プロトタイプオブジェクトに新しい方法を追加します.配列と文字列内蔵オブジェクトはプロトタイプオブジェクトに上書き操作できません.Aray.prototype.xxx=function{}だけです.
    Array.prototype.sum=function(){
          var sum=0;
          for(var i=0;i
    コール方法の役割
    function fn(x, y) {
      console.log('Hello,world');
      console.log(this);
      console.log(x + y);
    }
    var a = {
      name: 'me',
    }
    // call()      
    fn.call();
    // call()       this  
    fn.call(o, 11, 2);
    
    オブジェクト指向プログラミングOOP
  • ES 6の前に、立体関数+プロトタイプによってオブジェクト指向プログラミング
  • を実現した.
  • ES 6は、クラスを介してオブジェクト指向プログラミング
  • を実現する.
    1.コンストラクタは、プロトタイプオブジェクトprototype 2.コンストラクタのプロトタイプの中にコンストラクタが配置関数そのものを指しています.コンストラクタは、プロトタイプのオブジェクト添加方法4.コンストラクタによって作成されたオブジェクトの例を示します.プロト.プロトタイプは構造関数のプロトタイプオブジェクトを指します.
    class Star {
    
    }
    console.log(typeof Star);
    // 1.                             
    // (1)      prototype
    console.log(Star.prototype);
    // (2)     prototype   constructor     
    console.log(Star.prototype.constructor);
    // (3)             
    Star.prototype.sing = function () {
        console.log('  ');
    }
    var a = new Star();
    console.dir(a);
    // (4)         __proto__          
    console.dir(a.__proto__ === Star.prototype);
    
    ES 5新規方法
    反復方法:forEach()、map()、filter()、some()、every();
    forEach()array.forEach(function(currentValue,index,arr))
  • current Value:現在のエントリを配列する値
  • index:現在の項目を配列するインデックス
  • arr:配列オブジェクト自体
  • // forEach   (  )  
    var arr = [1, 2, 3, 4, 5, 6, 7, 8],
        sum = 0;
    arr.forEach(function (value, index, arr) {
        console.log('      ' + value + ',          ' + index);
        sum += value;
    });
    console.log('arr  \t' + sum);
    
    filter()array.filter(function(currentValue,index,arr))
  • filter()法は新しい配列を作成し、新しい配列の要素は配列中の条件に合致するすべての要素を検査することによって、主にフィルタ配列
  • に用いられる.
  • は、配列
  • を直接返すことに注意してください.
  • current Value:現在のエントリを配列する値
  • index:現在の項目を配列するインデックス
  • arr:配列オブジェクト自体
  • // filter     
    var arr = [12, 77, 23, 2, 4, 21, 11];
    var newArr = arr.filter(function (value, index, arr) {
        return value > 20;
    })
    console.log('filter   \t', newArr);
    
    私()
    some()メソッドは、配列内の要素が指定条件を満たしているかどうかを検出するために使用されるarray.some(function(currentValue,index,arr)).
  • some()メソッドは、配列中の要素が指定条件を満たしているかどうかを検出するために使用され、通俗的な点検索配列中に条件を満たす
  • があるかどうかを確認する.
  • は、戻り値がブール値であることに注意し、この要素が検索されると、trueに戻り、検索されないならfalse
  • に戻ります.
  • current Value:現在のエントリを配列する値
  • index:現在の項目を配列するインデックス
  • arr:配列オブジェクト自体
  • // some                
    var arr = [12, 77, 23, 2, 4, 21, 11];
    var newArr = arr.filter(function (value, index, arr) {
        return value == '2';
    })
    console.log(newArr);
    
    trim
    trim()は、空白文字str.trim() trim()を文字列の両端から削除します.方法は元の文字列自体に影響を与えません.新しい文字列を返します.
    Object.defineProperty()
    Object.defineProperty()は、オブジェクトの新規属性を定義したり、既存の属性を変更したりするObject.defineProperty(obj,prop,descriptor).
  • obj:必要です.ターゲット
  • prop:必要です.定義または変更が必要な属性の名前
  • descriptor:必要です.ターゲット属性が持つ特性
  • value:属性の値を設定するデフォルトのundefined writable:値を書き換えることができますか?true falseデフォルトfalse enumerable:ターゲット属性は列挙されますか?true falseデフォルトfalse configrable:ターゲット属性が削除されるかどうか、または再度特性true falseのデフォルトfalseを修正することができますか?
    var obj = {
        id: 1,
        name: 'me',
        price: 88888
    }
    Object.defineProperty(obj, 'other', {
        value: '    ',
    })
    console.log(obj);
    Object.defineProperty(obj, 'name', {
        value: '  name',
    })
    console.log(obj);
    
    Object.keys()
    Object.keys()は、オブジェクト自体の属性を全て取得するためのObject.keys(obj)
  • 効果はfor…in…
  • に似ています.
  • は、属性名からなる行列
  • を返します.
    var obj = {
        id: 1,
        name: 'me',
        price: 88888
    }
    console.log('      \t', Object.keys(obj));