課程
/前端開發
/JavaScript
/JavaScript深入淺出
Object.create的實現方法不是很理解,F函數的左右是不是相當于把Student.prototype賦值為proto?老師能把這個和1、2方法區別一下嗎?
2015-06-16
源自:JavaScript深入淺出 8-5
正在回答
return new F 和 new F() 有區別嗎
有些父類需要傳遞參數,用return new F那種只需要調用一次父類構造函數,new的話會調用2次。詳情請參考javascript高級程序設計第三版的6.3.6寄生組合式繼承
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構造函數的方法和屬性了,達不到想要的目的。
舉報
由淺入深學習JS語言特性,且解析JS常見誤區,從入門到掌握
1 回答為什么 return new F后面沒有( )
5 回答為什么不是Student = Object.create(Person);和Student.prototype = Object.create(Person.prototype);有什么區別
1 回答請問object.create()和new有什么不同?
4 回答老師,這里的Object.creat和new有什么區別嗎
1 回答new和create的區別是什么啊?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2021-01-28
return new F 和 new F() 有區別嗎
2015-07-21
有些父類需要傳遞參數,用return new F那種只需要調用一次父類構造函數,new的話會調用2次。詳情請參考javascript高級程序設計第三版的6.3.6寄生組合式繼承
2015-06-19
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構造函數的方法和屬性了,達不到想要的目的。