亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

Object.create的實現方法里面return new F和new Person()有什么區別?

Object.create的實現方法不是很理解,F函數的左右是不是相當于把Student.prototype賦值為proto?老師能把這個和1、2方法區別一下嗎?

正在回答

3 回答

return new F 和 new F() 有區別嗎

0 回復 有任何疑惑可以回復我~

有些父類需要傳遞參數,用return new F那種只需要調用一次父類構造函數,new的話會調用2次。詳情請參考javascript高級程序設計第三版的6.3.6寄生組合式繼承

0 回復 有任何疑惑可以回復我~

1、Object.create是創建一個空對象({}),空對象的原型指向傳遞進來的參數(Person.prototype),

? ? ? 在這個例子當中就是,Student.prototype屬性值是空對象,空對象的_proto_等于Person.prototype(空對象相當于是Person的實例,但是又不繼承Person構造函數的屬性),

? ? ? 即Student.prototype._proto_=Person.prototype,

? ? ? 這樣Student的實例可以通過原型鏈訪問Person.prototype的方法,但又不繼承Person構造函數的方法和屬性,可以在Student的構造函數中通過Person.call(this,'name','age')的方法對初始屬性賦值; ??

2、第二種方法先創建一個空的構造函數F,F.prototype=proto(即傳進來的參數Person.prototype),那么這時候創建的F的實例,就相當于可以訪問Person.prototype的方法,但又不繼承Person構造函數的方法和屬性,同Object.create是同樣的效果。

如果是new Person()的話,那么就擁有Person構造函數的方法和屬性了,達不到想要的目的。

1 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

Object.create的實現方法里面return new F和new Person()有什么區別?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號