構(gòu)造函數(shù)與其他函數(shù)的唯一區(qū)別,就在于調(diào)用它們的方式不同。不過(guò),構(gòu)造函數(shù)畢竟也是函數(shù), 不存在定義構(gòu)造函數(shù)的特殊語(yǔ)法。任何函數(shù),只要通過(guò)new操作符來(lái)調(diào)用,那它就可以作為構(gòu)造函數(shù);而任何函數(shù),如果不通過(guò)new操作符來(lái)調(diào)用,那它跟普通函數(shù)也不會(huì)有什么兩樣。南昌網(wǎng)絡(luò)公司技術(shù)員舉例說(shuō)明:例如,前面例子中定義的Person()函數(shù)可以通過(guò)下列任何一種方式來(lái)調(diào)用:
//當(dāng)作構(gòu)造函數(shù)使用
var person=new Person("Nicholas",29,"Software Engineer");
person.sayName(); //“Nicholas"
//作為普通函數(shù)調(diào)用
Person("Greg",27,"Doctor"); //添加到window
window.sayName(); //"Greg"
//在另一個(gè)對(duì)象的作用域中調(diào)用
var o=new Object();
Person.call(o,"Kristen",25,"Nurse");
o.sayName(); //"Kristen"
這個(gè)例子中的前兩行代碼展示了構(gòu)造函數(shù)的典型用法,即使用new操作符來(lái)創(chuàng)建一個(gè)新對(duì)象。接下來(lái)的兩行代碼展示了不使用new操作符調(diào)用Person()會(huì)出現(xiàn)什么結(jié)果:屬性和方法都被添加給wind。w對(duì)象了。有讀者可能還記得,當(dāng)在全局作用域中調(diào)用一個(gè)函數(shù)時(shí),this對(duì)象總是指向Global對(duì)象(在瀏覽器中就是window對(duì)象)。因此,在調(diào)用完函數(shù)之后,可以通過(guò)window對(duì)象來(lái)調(diào)用sayName()方法,并且還返回了"Greg"。最后,也可以使用call()(或者apply())在某個(gè)特殊對(duì)象的作用域中調(diào)用Person()函數(shù)。這里是在對(duì)象O的作用域中調(diào)用的,因此調(diào)用后O就擁有了所有屬性和sayName()方法
本文僅限于南昌網(wǎng)站設(shè)計(jì)公司百恒網(wǎng)絡(luò)內(nèi)容技術(shù)人員查看,請(qǐng)勿作其他商業(yè)用途. 文章出自:南昌網(wǎng)絡(luò)公司-百恒網(wǎng)絡(luò) http://www.myforexfactory.net 如轉(zhuǎn)載請(qǐng)注明出處!