課程
/前端開發
/JavaScript
/電商網站前端架構
這個地方有問題吧,people.prototype.getName 的修改依然會影響到MAN實例
2014-10-09
源自:電商網站前端架構 2-3
正在回答
我聽到的貌似也是有問題的版本,不過既然大家其實都明確講師原本是啥意思,就沒關系了。
講師的意思呢,是說 通過 man.prototype = new people; 這種方式進行繼承之后,在man.prototype上對getName方法進行修改,不會影響people.prototype上的同名方法
例如:
?function People (){??this.name = 'frog';??this.age = 29;?}??People.prototype.getName = function(){??return this.name;?}??function Man(){??? this.name = 'rat';??? this.age = 3;?}??Man.prototype = People.prototype;
?//某一天,新來的小伙伴修改了這個方法?Man.prototype.getName = function(){??return this.age;?}?
//驗下一下父類是否被子類改寫?var p = new People;?var n = p.getName();?console.log(n); // 輸出29而不是 frog ?//說明直接用原開鏈,父類會被子類改寫
而Man.prototype = new People;
則父類原型鏈上的同名方法不會被改寫
因為這時Man.prototype上保存的只是People的實例,
而實例的修改,顯然是不會對它的類構成影響的。
講師的意思呢,是說 通過 man.prototype = new people; 這種方式進行繼承之后,在man.prototype上對getName方法進行修改,不會影響man.prototype.getName。
確實會影響MAN的實例 這是個錯誤
舉報
整個項目組織、開發、發布等流程,教你如何創建一個電子商務網站
1 回答啥是模板呢
1 回答requirejs 的依賴文件和 js文件合并的問題
2 回答為什么要用命令行??
2 回答好難 聽不懂
2 回答設計和交互用的什么軟件呢?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2014-10-22
我聽到的貌似也是有問題的版本,不過既然大家其實都明確講師原本是啥意思,就沒關系了。
2014-10-18
講師的意思呢,是說 通過 man.prototype = new people; 這種方式進行繼承之后,在man.prototype上對getName方法進行修改,不會影響people.prototype上的同名方法
例如:
?function People (){
??this.name = 'frog';
??this.age = 29;
?}
?
?People.prototype.getName = function(){
??return this.name;
?}
?
?function Man(){
??? this.name = 'rat';
??? this.age = 3;
?}
?
?Man.prototype = People.prototype;
?//某一天,新來的小伙伴修改了這個方法
?Man.prototype.getName = function(){
??return this.age;
?}
?
//驗下一下父類是否被子類改寫
?var p = new People;
?var n = p.getName();
?console.log(n); // 輸出29而不是 frog
?//說明直接用原開鏈,父類會被子類改寫
而Man.prototype = new People;
則父類原型鏈上的同名方法不會被改寫
因為這時Man.prototype上保存的只是People的實例,
而實例的修改,顯然是不會對它的類構成影響的。
2014-10-18
講師的意思呢,是說 通過 man.prototype = new people; 這種方式進行繼承之后,在man.prototype上對getName方法進行修改,不會影響man.prototype.getName。
2014-10-10
確實會影響MAN的實例 這是個錯誤