JavaScript自定義構造函數

自定義構造函數

自定義構造函數,可以快速創建多個對象,並且代碼複用性高。

// 一般爲了區分構造函數與普通函數,構造函數名首字母大寫

function Student(name,score,code){ 

    this.name = name;

    this.score = score;

    this.code = code;

}

 

var stu1 = new Student('諸葛亮',100,1);

var stu2 = new Student('蔡文姬',98,2);

var stu3 = new Student('張飛',68,3);

構造函數語法:

  • 構造函數名首字母大寫;
  • 構造函數一般與關鍵字:new一起使用;
  • 構造函數一般不需要設置return語句,默認返回的是新創建的對象;
  • this指向的是新創建的對象。

構造函數的執行過程:

  • new關鍵字,創建一個新的對象,會在內存中開闢一個新的儲存空間;
  • 讓構造函數中的this指向新創建的對象;
  • 執行構造函數,給新創建的對象進行初始化(賦值);
  • 構造函數執行(初始化)完成,會將新創建的對象返回。

構造函數的注意點:

  • 構造函數本身也是函數;
  • 構造函數有返回值,默認返回的是新創建的對象;
  • 但是如果手動添加返回值,添加的是值類型數據的時候,構造函數沒有影響。如果添加的是引用類型(數組、對象等)值的時候,會替換掉新創建的對象。

function Dog(){

    this.name="哈士奇";

    this.age=0.5;

    this.watch=function(){

        console.log('汪汪汪,禁止入內');

    }

    // return false;          返回值不會改變,還是新創建的對象

    // return 123;            返回值不會改變,還是新創建的對象

    // return [1,2,3,4,5];    返回值發生改變,返回的是這個數組

    return  {aaa:'bbbb'};  // 返回值發生改變,返回的是這個對象

}

 

var d1=new Dog();  // 新創建一個對象

console.log(d1);

  • 構造函數可以當做普通函數執行,裏面的this指向的是全局對象window

function Dog(){

    this.name="husky";

    this.age=0.5;

    this.watch=function(){

        console.log('汪汪汪,禁止入內');

    }

    console.log(this);  // window對象

    return 1;

}

console.log(Dog());  // 打印 1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章