希岛爱理av免费一区二区,成人性教育av免费网址,欧美7777,在线免费日韩片

十年專注于品牌網站建設 十余年專注于網站建設_小程序開發_APP開發,低調、敢創新、有情懷!
南昌百恒網絡微信公眾號 掃一掃關注
小程序
tel-icon全國服務熱線:400-680-9298,0791-88117053
掃一掃關注百恒網絡微信公眾號
掃一掃打開百恒網絡微信小程序

百恒網絡

南昌百恒網絡

ECMAScript中的構造函數創建方法及注意事項

百恒網絡 2013-03-07 4745

ECMAScript中的構造函數可用來創建特定類型的對象。像Object和Array這樣的原生構造函數,在運行時會自動出現在執行環境中。此外,也可以創建自定義的構造函數,從而定義自定義對象類型的屬性和方法。例如,可以使用構造函數模式將前面的例子重寫如下:

function Person(name,age,Job){

this.name=name;

this.age=age;

this.Job=Job;

this.sayName=function(){

alert(this.name);

};

}

var personl:new Person("Nicholas",29,"Software Engineer");

var person2=new Person("Greg",27,"Doctor");

personl.sayName(); //"Nicholas"

person2.sayName(); //"Greg"

在這個例子中,Person()函數取代了createPerson()函數。我們注意到,Person()中的代碼除了與createPerson()中相同的部分外,還存在以下不同之處:

□沒有顯式地創建對象;

□直接將屬性和方法賦給了this對象;

□沒有return語句。

此外,還應該注意到函數名Person使用的是大寫字母P,按照慣例,構造函數始終都應該以一個大寫字母開頭,而非構造函數則應該以一個小寫字母開頭。這個做法借鑒自其他OO語言,主要是 為了區別于ECMAScript中的其他函數;因為構造函數本身也是函數,只不過可以用來創建對象而已。

要創建Person的新實例,必須使用new操作符。以這種方式調用構造函數實際上會經歷以下4個步驟:

(1)創建一個新對象;

(2)將構造函數的作用域賦給新對象(因此this就指向了這個新對象);

(3)執行構造函數中的代碼(為這個新對象添加屬性);

(4)返回新對象。

備注:南昌網站設計公司技術認為,構造類似于類的結構,但有些不用.

在前面例子的最后,personl和person2分別保存著Person的一個不同的實例。這兩個對象都有一個constructor(構造函數)屬性,該屬性指向Person,如下所示:

alert(personl.constructor==Person); //true

alert(person2.constructor==Person); //true

對象的constructor屬性最初是用來標識對象類型的。但是,提到檢測對象類型,還是instanceof操作符要更可靠一些。我們在這個例子中創建的所有對象既是Object的實例,同時也是Person的實例,這一點通過instanceof操作符可以得到驗證:

alert(personl instanceof Object); //true

alert(personl instanceof Person); //true

alert(person2 instanceof Object); //true

alert(person2 instanceof Person); //true

創建自定義的構造函數意味著將來可以將它的實例標識為一種特定的類型;而這正是構造函數模式勝過工廠模式的地方。在這個例子中,personl和person2之所以同時是Object的實例,是因為所有對象均繼承自Object。

南昌網絡公司技術員提示,以這種方式定義的構造函數是定義在Global對象(在瀏覽器中是window對象)中的,因此除非另有說明,instanceof操作符和constructor屬性始終會假設是在全局作用域中查詢構造函數.

本文僅限內部技術人員學習交流,不得作于其他商業用途. 文章出自:南昌網站建設公司-百恒網絡 http://www.527701.com 如轉載請注明出處!


400-680-9298,0791-88117053
掃一掃關注百恒網絡微信公眾號
掃一掃打開百恒網絡小程序

歡迎您的光顧,我們將竭誠為您服務×

售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售后服務 售后服務
 
售后服務 售后服務
 
備案專線 備案專線
 
×
主站蜘蛛池模板: 郑州市| 玛多县| 九龙坡区| 伊宁市| 乐业县| 萨迦县| 三明市| 平遥县| 邹平县| 济宁市| 沧州市| 澳门| 射阳县| 武义县| 甘德县| 营口市| 寿宁县| 潢川县| 丰县| 普陀区| 区。| 清镇市| 延津县| 白银市| 满城县| 绵阳市| 辰溪县| 玉田县| 松潘县| 中西区| 青河县| 柏乡县| 东辽县| 手游| 溧阳市| 临洮县| 赤水市| 界首市| 石家庄市| 西安市| 建阳市|