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