Object.create的實現(xiàn)方法里面return new F和new Person()有什么區(qū)別?
Object.create的實現(xiàn)方法不是很理解,F(xiàn)函數(shù)的左右是不是相當于把Student.prototype賦值為proto?老師能把這個和1、2方法區(qū)別一下嗎?
Object.create的實現(xiàn)方法不是很理解,F(xiàn)函數(shù)的左右是不是相當于把Student.prototype賦值為proto?老師能把這個和1、2方法區(qū)別一下嗎?
2015-06-16
舉報
2021-01-28
return new F 和 new F() 有區(qū)別嗎
2015-07-21
有些父類需要傳遞參數(shù),用return new F那種只需要調(diào)用一次父類構(gòu)造函數(shù),new的話會調(diào)用2次。詳情請參考javascript高級程序設(shè)計第三版的6.3.6寄生組合式繼承
2015-06-19
1、Object.create是創(chuàng)建一個空對象({}),空對象的原型指向傳遞進來的參數(shù)(Person.prototype),
? ? ? 在這個例子當中就是,Student.prototype屬性值是空對象,空對象的_proto_等于Person.prototype(空對象相當于是Person的實例,但是又不繼承Person構(gòu)造函數(shù)的屬性),
? ? ? 即Student.prototype._proto_=Person.prototype,
? ? ? 這樣Student的實例可以通過原型鏈訪問Person.prototype的方法,但又不繼承Person構(gòu)造函數(shù)的方法和屬性,可以在Student的構(gòu)造函數(shù)中通過Person.call(this,'name','age')的方法對初始屬性賦值; ??
2、第二種方法先創(chuàng)建一個空的構(gòu)造函數(shù)F,F(xiàn).prototype=proto(即傳進來的參數(shù)Person.prototype),那么這時候創(chuàng)建的F的實例,就相當于可以訪問Person.prototype的方法,但又不繼承Person構(gòu)造函數(shù)的方法和屬性,同Object.create是同樣的效果。
如果是new Person()的話,那么就擁有Person構(gòu)造函數(shù)的方法和屬性了,達不到想要的目的。