首先明確一點:javascript中構造函數是不需要有返回值的,這一點跟java很類似。可以認為構造函數和普通函數的最大差別就是:構造函數中沒有return語句,普通函數可以有return語句;構造函數中會使用this關鍵字定義成員變量和成員方法,普通的函數不會使用this關鍵字定義成員變量和方法。
function Person(name,sex)
{
this.name = name;
this.sex = sex;
// return 1;
//return true;
//return "aty";
return {"returnValue":11};
}
//new關鍵字會被認為是創建對象
var aObj = new Person("11",1);
console.log(aObj.returnValue); //11
console.log(aObj.name); //undefined
function Person(name,sex) { this.name = name; this.sex = sex; return 1; //return true; //return "aty"; //return {"returnValue":11}; } //new關鍵字會被認為是創建對象 var aObj = new Person("11",1); console.log(aObj.returnValue); //undefined console.log(aObj.name); //11
構造函數不需要顯示的返回值。使用new來創建對象(調用構造函數)時,如果return的是非對象(數字、字符串、布爾類型等)會忽而略返回值;如果return的是對象,則返回該對象。
下面簡單介紹下,javascript中new對象的過程:如var myObj = newPerson(“aty”,25);
1.創建一個空的Object對象.var obj = new Object();
2.將構造函數Person中this指向剛創建的obj對象
3.將創建的obj的__proto__指向構造函數Person的prototype。這一步是建立對象和原型直接的對應關系。firefox下通過
對象的__proto__屬性能夠訪問到原型,IE下則沒有暴露出相應的屬性。
4.執行構造函數Person()中的代碼