Javascript 创建对象方法的总结
1. 使用Object構造函數來創建一個對象,下面代碼創建了一個person對象,并用兩種方式打印出了Name的屬性值。
????var?person?=?new?Object();person.name="kevin";person.age=31;alert(person.name);alert(person["name"])2. 使用對象字面量創建一個對象;不要奇怪person["5"],這里是合法的;另外使用這種加括號的方式字段之間是可以有空格的如person["my age"].
????var?person?=?{name:"Kevin",age:31,????????5:"Test"};alert(person.name);????alert(person["5"]);3. 使用工廠模式創建對象,返回帶有屬性和方法的person對象。
function?createPerson(name,?age,job) {????var?o?=?new?Object();o.name=name;o.age=31;o.sayName=function(){alert(this.name);};????return?o; } createPerson("kevin",31,"se").sayName();4. 使用自定義構造函數模式創建對象;這里注意命名規范,作為構造函數的函數首字母要大寫,以區別其它函數。這種方式有個缺陷是sayName這個方法,它的每個實例都是指向不同的函數實例,而不是同一個。
function?Person(name,age,job) {????this.name=name;????this.age=age;????this.job=job;????this.sayName=function(){alert(this.name);}; }var?person?=?new?Person("kevin",31,"SE"); person.sayName();5. 使用原型模式創建對象;解決了方法4中提到的缺陷,使不同的對象的函數(如sayFriends)指向了同一個函數。但它本身也有缺陷,就是實例共享了引用類型friends,從下面的代碼執行結果可以看到,兩個實例的friends的值是一樣的,這可能不是我們所期望的。
function?Person() {}Person.prototype?=?{constructor?:?Person,name:"kevin",age:31,job:"SE",friends:["Jams","Martin"],sayFriends:function(){alert(this.friends);} };var?person1?=?new?Person(); person1.friends.push("Joe"); person1.sayFriends();//Jams,Martin,Joe ?person2?=6. 組合使用原型模式和構造函數創建對象,解決了方法5中提到的缺陷,而且這也是使用最廣泛、認同度最高的創建對象的方法。
.name=.age=.job==?person1?=??Person("kevin",31,"SE"?7. 動態原型模式;這個模式的好處在于看起來更像傳統的面向對象編程,具有更好的封裝性,因為在構造函數里完成了對原型創建。這也是一個推薦的創建對象的方法。
function?Person(name,age,job) {????//屬性this.name=name;????this.age=age;????this.job=job;????this.friends=["Jams","Martin"];????//方法if(typeof?this.sayName?!="function"){Person.prototype.sayName=function(){alert(this.name);};Person.prototype.sayFriends=function(){alert(this.friends);};} }var?person?=?new?Person("kevin",31,"SE"); person.sayName(); person.sayFriends();另外還有兩個創建對象的方法,寄生構造函數模式和穩妥構造函數模式。由于這兩個函數不是特別常用,這里就不給出具體代碼了。
寫了這么多創建對象的方法,其實真正推薦用的也就是方法6和方法7。當然在真正開發中要根據實際需要進行選擇,也許創建的對象根本不需要方法,也就沒必要一定要選擇它們了。
本文轉自 風雨蕭條 51CTO博客,原文鏈接:http://blog.51cto.com/1095221645/1865185,如需轉載請自行聯系原作者
總結
以上是生活随笔為你收集整理的Javascript 创建对象方法的总结的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: Docker与OpenStack集成实战
- 下一篇: php curl
