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