構造函數可以與new一起使用,代表建立對象;也能夠當做普通的函數調用,因為它也是一個函數。
function Person(name)
{
this.name=name;
}
Person(12);
alert(window.name);//12
可以看到當構造函數被當成普通函數調用的時候,this代表的是全局的window對象。很顯然把構造函數當成普通函數調用,不是好的做法, 也沒有什麼道理要這麼做。實際中應該杜絕這樣奇怪的用法,以免産生奇怪的問題。
function Person(name,sex)
{
this.name=name;
var name1="22";
name2=sex;
}
var per = new Person("aty","boy");
alert(per.name);// aty
alert(per.name1);//undefined
alert(per.name2);//undefined
alert(window.name2);//boy
構造函數中定義變量使用this是成員變量;使用var是局部變量;不加關鍵字是全局變量,會添加到window對象中。這樣解釋了為什麼構造函數中要使用this關鍵字。