国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

JavaScript創建對象方式總結【工廠模式、構造函數模式、原型模式

2024-05-06 15:27:14
字體:
來源:轉載
供稿:網友

本文實例總結了JavaScript創建對象方式。分享給大家供大家參考,具體如下:

這里主要是對《JavaScript高級程序設計》第六章(面向對象的程序設計)的總結,書上的這章至少看了4遍是有的。該章主要講對象的創建與繼承。其中創建對象和繼承方式至少6種,再加上一些方法屬性,很容易搞得暈頭轉向的。因此有必要對本章的內容理一理,以后忘了也好過來看一看。

由于文章長度的限制,本文主要講創建對象。

1 創建對象

1.1 一般方法

使用Object或者采用對象字面量的方法。

var o = {a: 1};var o2=new Object();o2.a=1;

缺點:使用同一個接口創建很多對象,會產生大量重復的代碼。

1.2工廠模式

function parent(name,age){  var Child = new Object();  Child.name=name;  Child.age=age;  Child.sayHi=function(){    console.log("Hi");  }  return Child;};var x = Parent("Tom",12);console.log(x.name); //Tomx.sayHi(); //Hi

函數parent能夠根據接受的參數來構建一個包含所有必要信息的child對象??梢詿o限次調用這個函數,都會返回一個包含兩個屬性和一個方法的對象。

解決了創建多個相似對象的問題,但卻沒有解決對象識別的問題(即怎樣知道一個對象的類型)。

1.3構造函數模式

對于構造函數這個名字,學過java或者c++的同學應該都是知道的,在js里也是差不多的。

用構造函數將上面的例子重寫如下:

function Parent(name,age){  this.name=name;  this.age=age;  this.sayHi=function(){    console.log("Hi");  };}var x = new Parent("Tom",12);console.log(x.name); //Tomx.sayHi(); //Hi

對于構造函數,我們需要在調用的時候加關鍵字 new。要注意的是,構造函數始終是以一個大寫字母開頭,而非構造函數始終是以一個小寫字母開頭。

與工廠模式相比,主要有以下幾個不同之處:

沒有顯示地創建對象; 直接將屬性和方法賦給了this對象; 沒有return語句。

缺點:使用構造函數的缺點就是每個方法都需要在每個實例上重新創建一遍。

1.4原型模式

我們創建的每一個函數都有一個prototype(原型)屬性,這個屬性是一個指針,指向一個對象,而這個對象的用途是包含可以由特定類型的所有實例共享的屬性與方法。使用原型對象的好處是可以讓所有的對象實例共享其包含的屬性與方法。

function Parent(name,age){  Parent.prototype.name=name;  Parent.prototype.age=age;  Parent.prototype.sayHi=function(){    console.log("Hi");  };}var x = new Parent("Tom",12);console.log(x.name); //Tomx.sayHi(); //Hi

缺點:優點就是其缺點,方法屬性都可以共享。具體可以看下面這個例子

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 大荔县| 南雄市| 刚察县| 镇雄县| 兴化市| 靖安县| 兴海县| 方正县| 南乐县| 新疆| 美姑县| 循化| 江都市| 樟树市| 大厂| 遵义县| 海安县| 阿瓦提县| 乌恰县| 浠水县| 乾安县| 宜兰市| 富宁县| 浦江县| 大厂| 凌源市| 余干县| 汝城县| 拉萨市| 乌拉特后旗| 武强县| 合肥市| 明水县| 拜泉县| 皋兰县| 屏南县| 三亚市| 阜城县| 连山| 玛纳斯县| 山阳县|