javascript対象に向けた理解(一)

7017 ワード

初めて園子で文を書きます.
js対象者向けの理解について:
工場の方式は何ですか?構造関数は何ですか?オリジナルチェーン?オブジェクトの参照
1.相手は何ですか?
jsで接触することが多いのが対象です.例えば:
 1 var arr = [];

 2 

 3 arr.number = 10;    //

 4 

 5 //alert( arr.number );

 6 //alert( arr.length );

 7 

 8 arr.a= function(){  //        :        

 9     alert(123);

10 };

11 

12 arr.a(); // 123
new Date()new String()により、オブジェクトを一つずつ作成することができます.
2.工場方式は何ですか?
//     :     



function createPerson(name){

    //1.  

    var obj = new Object();

    //2.  

    obj.name = name;

    obj.showName = function(){

        alert( this.name );

    };

    //3.  

    return obj;

    

}



var p1 = createPerson('  ');

p1.showName();
工場方式により、new関数は必要なく、直接関数の内部に新しいオブジェクトを作成し、新しいオブジェクトに属性と方法を追加してから投げます.短所は:柔軟さが足りないことです.
3.構造関数は何ですか?
  
function CreatePerson(name){

    

    this.name = name;

    this.showName = function(){

        alert( this.name );

    };

    

}



var p1 = new CreatePerson('  ');

p1.showName();
関数の外部にあるnew関数を通じて、オブジェクトを立体関数として具体化しました.関数の内部でthisはこの実用化の対象を指しています.windowを指すのではありません.属性と方法は実用化されたオブジェクトにマウントされました.短所:各方法は新しく作成した実用化対象の上にマウントされています.多くのオブジェクトを実装する必要があると、性能が無駄になります. 
特に注意: 
p1.showName() == p2.showName();//false     ,            ,        ,           。
 
4.オブジェクトの参照:
//example 1:



var a = [1,2,3];

var b = a;  

b.push(4);

alert(b);    //1,2,3,4;  // b     ,         a,  b    a  



//example 2:



var a = [1,2,3];

var b = a;

b = [1,2,3,4];

alert(a); // 1,2,3 //     b     a,    b    ,         ,    [1,2,3,4],       a

//     :          ,       



//example 3:

var a = [1,2,3];

var b = [1,2,3];

alert(a == b);  //                  
 
5.原型:
function CreatePerson(name){

    

    this.name = name;

}
// CreatePerson.prototype.showName
= function(){ alert( this.name ); }; var p1 = new CreatePerson(' '); p1.showName(); var p2 = new CreatePerson(' '); p2.showName(); alert(p1.showName() == p2.showName()) //true
 
//   



Array.prototype.sum = function(){

  var result = 0;  

  for(var i = 0; i<this.length; i++){

       result += this[i];         

    }

  return result;

}

arr = [1,2,3];

alert(arr.sum()); //6