日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

创建对象的多种方式

發布時間:2025/6/15 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 创建对象的多种方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
// 1. 工廠模式 //缺點:對象無法識別,因為原型都指向Object function pe() {var o = new Object();o.name = name;o.getname = function() {console.log(this.name)}return o }// 2. 構造函數模式 // 優點:實例可以識別為一個特定的類型 // 缺點:每次創建實例每個方法都要被創建一次 function Person(name) {this.name = name;this.getName = function() {console.log(this.name);};} var person = new Person('zhansan');// 2.1 構造函數模式優化 // 優點:解決了每個方法都要被重新創建的問題 // 缺點:這叫啥封裝…… function Person(name) {this.name = name;this.getName = getName;}function getName() {console.log(this.name); } var person = new Person('zhansan');// 3. 原型模式 // 優點:方法不會重新創建 // 缺點:1. 所有的屬性和方法都共享 2. 不能初始化參數 function Person(name) {}; Person.prototype.name = 'keivn'; Person.prototype.getName = function() {console.log(this.name); };var person1 = new Person();// 3.1 原型模式優化 // 優點:封裝性好了一點 // 缺點:重寫了原型,丟失了constructor屬性 function Person(name) {}; Person.prototype = {name: 'kevin',getName: function() {console.log(this.name);} };var person1 = new Person();// 3.2 原型模式優化 // 優點:實例可以通過constructor屬性找到所屬構造函數 // 缺點:原型模式該有的缺點還是有 function Person(name) {}Person.prototype = {constructor: Person,name: 'kevin',getName: function() {console.log(this.name);} };var person1 = new Person();// 4. 組合模式 // 優點:該共享的共享,該私有的私有,使用最廣泛的方式 // 缺點:有的人就是希望全部寫在一起,即更好的封裝性 function Person(name) {this.name = name; }Person.prototype = {constructor: Person,getName: function() {console.log(this.name);} };var person1 = new Person();// 4.1 動態原型模式 // 注意:使用動態原型模式時,不能用對象字面量重寫原型 function Person(name) {this.name = name;if (typeof this.getName != "function") {Person.prototype.getName = function() {console.log(this.name);}} }var person1 = new Person(); // 如果你就是想用字面量方式寫代碼,可以嘗試下這種: function Person(name) {this.name = name;if (typeof this.getName != "function") {Person.prototype = {constructor: Person,getName: function() {console.log(this.name);}}return new Person(name);} }var person1 = new Person('kevin'); var person2 = new Person('daisy');

  

轉載于:https://www.cnblogs.com/xzma/p/7987931.html

總結

以上是生活随笔為你收集整理的创建对象的多种方式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。