第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

動態(tài)原形模式為什么要加if?

動態(tài)原形模式為什么要加if?

清風(fēng)流光 2017-04-26 14:06:21
//動態(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); }; } } var?friend?=?new?Person("Nicholas",?29,?"Software?Engineer"); friend.sayName();?????//這里加不加if語句有什么區(qū)別?下面是我對其他模式的理解幫我看看有什么問題,多多指正//工廠模式 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"); alert(person1.sayName==person2.sayName)?//false?函數(shù)內(nèi)部創(chuàng)建新對象?相當(dāng)于每次都創(chuàng)建了一個新函數(shù)//構(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"); alert(person1==person2);//false??說明這是兩個對象?? alert(person1.sayName==person2.sayName);//true??屬性相等??說明外部創(chuàng)建新對象雖然獨立?但它們都同時指向同一個函數(shù)//原型模式 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(); var?person2?=?new?Person(); alert(person1.sayName?==?person2.sayName);?//true?每個函數(shù)都有一個原型對象?函數(shù)內(nèi)部的屬性叫對象屬相?是外部調(diào)用對象的屬性??而原型對象屬性函數(shù)本身擁有的屬性?它和函數(shù)本身相互聯(lián)系?外部創(chuàng)建實例化對象?可以讀取函數(shù)原型屬性// function?Person(){ } var?friend?=?new?Person(); Person.prototype?=?{ constructor:?Person, name?:?"Nicholas", age?:?29, job?:?"Software?Engineer", sayName?:?function?()?{ alert(this.name);? } }; friend.sayName();?//error?????friend指向的是修改前的地址?修改之后的地址?無法讀取?也就是說原型中的地址不會被覆蓋// function?Person(){ } Person.prototype?=?{ constructor:?Person, name?:?"Nicholas", age?:?29, job?:?"Software?Engineer", sayName?:?function?()?{ alert(this.name); } }; var?friend?=?new?Person(); friend.sayName();?//Nicholas???????friend指向兩個地址?修改前和修改后?依次讀取?相同屬性和方法進(jìn)行覆蓋// function?Person(){ } Person.prototype?=?{ constructor:?Person, name?:?"Nicholas", age?:?29, job?:?"Software?Engineer", friends?:?["Shelby",?"Court"], sayName?:?function?()?{ alert(this.name); } }; var?person1?=?new?Person(); var?person2?=?new?Person(); person1.friends.push("Van"); alert(person1.friends?===?person2.friends);?//true?person1和person2讀取的是同一地址的原型?修改的其中一個的屬性?另一個也會發(fā)生改變//組合使用構(gòu)造函數(shù)和原型模式 function?Person(name,?age,?job){ this.name?=?name; this.age?=?age; this.job?=?job; this.friends?=?["Shelby",?"Court"]; } Person.prototype?=?{ constructor?:?Person, sayName?:?function(){ alert(this.name); } } var?person1?=?new?Person("Nicholas",?29,?"Software?Engineer"); var?person2?=?new?Person("Greg",?27,?"Doctor"); person1.friends.push("Van"); alert(person1.friends);?//"Shelby,Count,Van" alert(person2.friends);?//"Shelby,Count" alert(person1.friends?===?person2.friends);?//false?比較的是對象?false alert(person1.sayName?===?person2.sayName);?//true?比較的是對象的地址?true
查看完整描述
  • 2 回答
  • 0 關(guān)注
  • 2051 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號