javascriptの中の対象の詳細な解、および対象と原型の鎖

2411 ワード

  • は5つの基本タイプを除いて、JSに残っているのはオブジェクト
  • です.
    (1)オブジェクトの定義:
    直接定義:var test={x:1,y:1}
    new方式作成:var test=new Object({x:1}
    Object.creat方式:var test=Object.creat({x:1}
    (2)オブジェクトの割り当てと取得
    例:
    var test={x:1,y:2}方法一:test[x]で値を取ることができます.
    方法二:test.xで値を取ることができます.
    本質的には、[]の中の値toStringを取ってから、例えば私達のところに有償語句があります.
    test[{}=3;
    test[{z:1]]で値3を取り、5大基本タイプの場合は同じ値で取ります.
    つまり、test内部の値はStringメソッドを呼び出して格納されるということです.
    2.対象と原型チェーン
    (1)ここではJSの継承に関して、JSの対象の中でnullを除いて、その他はすべて原型の対象のobject.prototypeを継承しています.つまりJSのほとんどの対象の原型チェーン上の先端は対象のobject.prototypeを持っています.
    JSはプロトタイプチェーンに基づいて集積され、オブジェクト上でプロトタイプチェーン上のオブジェクトの属性と方法にアクセスできる.例:
    function test(){
       this.x=x;
       this.y=y
    
    )
    var my=new test();
    test.prototype.z=3;
    alert(my.z)//出力は3です
    test.prototypeはmyの直接親チェーンの原型であり、myもプロトタイプチェーンに沿って検索できます.
    object.prototypeまでは、object.prototypeの方法を実現できます.
    my.toStering()//[object Object]を返します.
    (2)オブジェクト遍歴に対するプロトタイプチェーンの影響
    私たちは上記のようにオブジェクトmyを定義しました.オブジェクトにfor inエルゴードを使うと、
      function test(){
                 this.x=1;
                 this.y=2;
             }
            var my=new test();
            test.prototype.z=3;
           console.log(my.__proto__);//   test.prototype
            for( p in my)
            {
                console.log(my[p])//   1,2,3
            }
    私たちは最後にmy[p]を出力した値が1,2,3であることを発見しました.my上の属性を遍歴していると、myオブジェクトのプロトタイプチェーン上の属性も遍歴してきました.
    補足:そして、この遍歴は無秩序です.
    (3)特殊な割当値
    上記の例に対して、私達がmy対象を賦課すれば、
    my.z=4;
    alert(my.z);//       4
    オブジェクト上の属性とオブジェクトの原型上のオブジェクトが衝突したら、優先的に対象に対して
    属性の割り当てを行います.
    (4)対象のプロトタイプチェーン上では、すべての対象がobject.prototypeを継承しています.nullを除いて、以下のチェーンで反応できます.
    my(または他の対象)->test.prototype–
    …….–OB.prototype——>null