JavaScript — 創(chuàng)建對象

一玄妈、工廠模式

function createPerson(name, age, job){
  var o = new Object();
  o.name = name;
  o.age = age;
  o.job = job;
  o.sayName = function(){
    alert(this.name);
  };
  return o;
}
var person1 = createPerson("Nicholas", 29, "Software Engineer");
var person2 = createPerson("Greg", 27, "Doctor");

可以無數(shù)次調(diào)用上面這個函數(shù)醉鳖,解決創(chuàng)建多個相似對象的問題旋恼,但是沒有解決對象識別的問題(即怎樣知道一個對象的類型)
二昼牛、構(gòu)造函數(shù)模式

function Person(name, age, job) {
  this.name = name;
  this.age = age;
  this.job = job;
  this.sayName = function(){
    alert(this.name);
  };
}
var person1 = new Person("Nicholas", 29, "Software Engineer");
var person2 = new Person("Greg", 27, "Doctor");

person1 和 person2 是兩個不同的實例泛鸟,但是它們的 constructor(構(gòu)造函數(shù))s屬性都指向 Person蝠咆。

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

三、原型模式

function Person() {}
Person.prototype.name = "Nicholas";
Person.prototype.age= 29;
Person.prototype.job= "Software Engineer";
Person.prototype.sayName= function(){
  alert(this.name);
};
var person1 = new Person();
person1.sayName(); //"Nicholas"

var person2 = new Person();
person2.sayName(); //"Nicholas"

alert(person1.sayName == person2.sayName); //true

(1)驗證構(gòu)造函數(shù) Person 的 prototype 是否是 person1 對象的原型
Person.prototype.isPrototypeOf(person1) //true
(2)Object.getPrototypeOf() 返回 [[Prototype]] 的值
Object.getPrototypeOf(person1)
(3)完全刪除實例屬性
delete person1.name;
(4)檢測一個屬性是否存在于實例中,若存在刚操,返回 true
person1.hasOwnProperty("name")
(5)in 操作符
"name" in person1
在通過對象能夠訪問給定屬性時返回 true闸翅,無論該屬性存在于實例中還是原型中。
同時使用 hasOwnProperty() 和 in 菊霜,就可以確定該屬性是存在于對象中坚冀,還是存在于原型中:

function hasPrototypeProperty(object, name) {
 return !object.hasOwnProperty(name) && (name in object);
}

(6)for - in,返回的是所有能夠通過對象訪問的鉴逞、可枚舉的屬性记某,無論是實例還是原型中的。
(7)Object.keys(對象) 返回對象上所有可枚舉的實例屬性
(8)Object.getOwnPropertyNames() 返回所有實例屬性构捡,無論是否可枚舉
(9)使用下面的方式重設(shè) constructor 屬性會導(dǎo)致它的 [[Enumerable]]被設(shè)置為true液南,默認情況下,原生的 constructor 屬性是不可枚舉的勾徽。


簡單的原型語法

可以使用 Object.defineProperty()


Object.defineProperty()

四滑凉、組合使用構(gòu)造函數(shù)模式和原型模式
示例

五、動態(tài)原型模式
function Person(name, age, job) {
    
  //屬性
  this.name = name;
  this.age = age;
  this.job = job;

  //方法
   if (typeof this.sayName != "function") {

      Person.prototype.sayName = function(){
        alert(this.name);
      };
  }
} 

六喘帚、寄生構(gòu)造函數(shù)模式
七畅姊、穩(wěn)妥構(gòu)造函數(shù)模式

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市啥辨,隨后出現(xiàn)的幾起案子涡匀,更是在濱河造成了極大的恐慌,老刑警劉巖溉知,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件陨瘩,死亡現(xiàn)場離奇詭異,居然都是意外死亡级乍,警方通過查閱死者的電腦和手機舌劳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來玫荣,“玉大人甚淡,你說我怎么就攤上這事⊥背В” “怎么了贯卦?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長焙贷。 經(jīng)常有香客問我撵割,道長,這世上最難降的妖魔是什么辙芍? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任啡彬,我火速辦了婚禮羹与,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘庶灿。我一直安慰自己纵搁,他們只是感情好,可當我...
    茶點故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布往踢。 她就那樣靜靜地躺著腾誉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪菲语。 梳的紋絲不亂的頭發(fā)上妄辩,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天惑灵,我揣著相機與錄音山上,去河邊找鬼。 笑死英支,一個胖子當著我的面吹牛佩憾,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播干花,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼妄帘,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了池凄?” 一聲冷哼從身側(cè)響起抡驼,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎肿仑,沒想到半個月后致盟,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡尤慰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年馏锡,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片伟端。...
    茶點故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡杯道,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出责蝠,到底是詐尸還是另有隱情党巾,我是刑警寧澤,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布霜医,位于F島的核電站齿拂,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏支子。R本人自食惡果不足惜创肥,卻給世界環(huán)境...
    茶點故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧叹侄,春花似錦巩搏、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至撒强,卻和暖如春禽捆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背飘哨。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工胚想, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人芽隆。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓浊服,卻偏偏與公主長得像,于是被迫代替她去往敵國和親胚吁。 傳聞我的和親對象是個殘疾皇子牙躺,可洞房花燭夜當晚...
    茶點故事閱讀 42,828評論 2 345

推薦閱讀更多精彩內(nèi)容