摘要:面向?qū)ο筇攸c(diǎn)封裝繼承多態(tài)。直接賦值可以繼承原型對(duì)象對(duì)象復(fù)制可以繼承原型對(duì)象把父類的方法改寫叫方法重載。說我好累添加屬于自己的方法叫多態(tài)。
1、面向?qū)ο筇攸c(diǎn):封裝、繼承、多態(tài)。
2、構(gòu)造函數(shù) = 構(gòu)造器 + 原型對(duì)象;
(1)父類
function UserClass(name,age,word){
//構(gòu)造器 constructor this.name=name; this.age =age; this.word =word; this.init =function(){ return `${this.name} ----init初始化`; }
}
UserClass.prototype={
//原型對(duì)象 prototype 只能實(shí)例化之后才能調(diào)取 say(){ return `${this.name}---${this.age}----${this.word}`; }
}
module.exports = UserClass;
var u1 = new UserClass("大雷",18,"你們這些二傻子");
打?。耗銈冞@些二傻子 -- 大雷 -- init初始化
(2)子類
繼承父類:call/apply 改變this指向來實(shí)現(xiàn)繼承,兩者參數(shù)不相同,功能相同。但無法繼承原型對(duì)象。
var UserClass=require("./userClass");
function User(name,age,word,grade){
this.grade=grade; //UserClass.call(this,name,age,word); UserClass.apply(this,[name,age,word]);
}
//(1)直接賦值:可以繼承原型對(duì)象
//User.prototype = new UserClass();
//(2)對(duì)象復(fù)制:可以繼承原型對(duì)象
//for(var i in UserClass.prototype){
// User.prototype[i] = UserClass.prototype[i];
// }
User.prototype={
say(){ //把父類的say方法改寫叫方法重載。 return `${this.name} 說:我好累`; }, walk(){ //添加屬于自己的方法叫多態(tài)。 return "i am fly"; }
}
module.exports = User;
var u2 = new User("小明",22,"不存在的啊",100);
補(bǔ)充知識(shí)點(diǎn):
var person = {
username: "人類", say: function () { alert(this.username + "你好");
}
}
var yellowPerson = {
__proto__: person, username: "黃種人",
};
(1)Object.prototype.username = "地球人";//可以使用大寫的Object來實(shí)現(xiàn)繼承
(2)yellowPerson.constructor.prototype === Object.prototype 結(jié)果為true
注意:yellowPerson.prototype.username = "地球人"; 普通對(duì)象不能使用原型來繼承
打?。?yellowPerson.say();
普通函數(shù)的繼承call和apply:
window.username = "lili"; var person = { username: "leson" function say(userage,hobby) { alert(this.username + "今年" + userage + "歲喜歡"+hobby); } say.call(person, 18,"籃球");//say里面的this 指向call里面的第一個(gè)參數(shù)
window.username = "lili"; var person = { username: "leson" } function say(userage,hobby) { alert(this.username + "今年"+userage+"歲喜歡"+hobby); } say.apply(person,[18,"籃球"]);//say里面的this 指向apply里面的第一個(gè)參數(shù)
構(gòu)造函數(shù):使用的時(shí)候用new關(guān)鍵字實(shí)例化的函數(shù)
(1、構(gòu)造函數(shù)就是一個(gè)類(object) 可以有屬性和方法 里面的this就指向該構(gòu)造函數(shù)
2、構(gòu)造函數(shù)可以通過prototype來實(shí)現(xiàn)繼承(補(bǔ)充自身擴(kuò)展更多內(nèi)容)
3、繼承的時(shí)候就會(huì)產(chǎn)生原型鏈 自身-原型-Object Object沒有就是undefined Object就是原型鏈的末端)
this的指向問題:函數(shù)屬于誰就指向誰
1 window 當(dāng)函數(shù)直接調(diào)用的時(shí)候 函數(shù)名前面什么都沒有的時(shí)候 say();
2 object 指向函數(shù)的所有者 btn.onclick = function(){ }
3 構(gòu)造函數(shù) new Say() this就指向構(gòu)造函數(shù)
4 call/apply里面的第一個(gè)參數(shù)
三種繼承方式:
構(gòu)造函數(shù) 使用原型
普通對(duì)象 使用內(nèi)部原型
普通函數(shù) 使用call/apply
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/106118.html
摘要:實(shí)現(xiàn)多態(tài)的三個(gè)必要條件繼承在多態(tài)中必須存在有繼承關(guān)系的子類和父類。參考面試題解惑系列九繼承多態(tài)重載和重寫面向?qū)ο笕筇匦苑庋b,繼承,多態(tài)以及抽象接口的介紹 版權(quán)聲明:本文由吳仙杰創(chuàng)作整理,轉(zhuǎn)載請(qǐng)注明出處:https://segmentfault.com/a/1190000009141566 1. 面向?qū)ο缶幊痰娜筇匦?Java 面向?qū)ο缶幊逃腥筇匦裕悍庋b、繼承、多態(tài)。 1.1 封裝...
摘要:很多情況下,通常一個(gè)人類,即創(chuàng)建了一個(gè)具體的對(duì)象。對(duì)象就是數(shù)據(jù),對(duì)象本身不包含方法。類是相似對(duì)象的描述,稱為類的定義,是該類對(duì)象的藍(lán)圖或原型。在中,對(duì)象通過對(duì)類的實(shí)體化形成的對(duì)象。一類的對(duì)象抽取出來。注意中,對(duì)象一定是通過類的實(shí)例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...
摘要:很多情況下,通常一個(gè)人類,即創(chuàng)建了一個(gè)具體的對(duì)象。對(duì)象就是數(shù)據(jù),對(duì)象本身不包含方法。類是相似對(duì)象的描述,稱為類的定義,是該類對(duì)象的藍(lán)圖或原型。在中,對(duì)象通過對(duì)類的實(shí)體化形成的對(duì)象。一類的對(duì)象抽取出來。注意中,對(duì)象一定是通過類的實(shí)例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...
摘要:很多情況下,通常一個(gè)人類,即創(chuàng)建了一個(gè)具體的對(duì)象。對(duì)象就是數(shù)據(jù),對(duì)象本身不包含方法。類是相似對(duì)象的描述,稱為類的定義,是該類對(duì)象的藍(lán)圖或原型。在中,對(duì)象通過對(duì)類的實(shí)體化形成的對(duì)象。一類的對(duì)象抽取出來。注意中,對(duì)象一定是通過類的實(shí)例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...
摘要:會(huì)造成內(nèi)存浪費(fèi)的問題構(gòu)造函數(shù)繼承聲明父類聲明子類生成實(shí)例組合式繼承組合式繼承是汲取了兩者的優(yōu)點(diǎn),既避免了內(nèi)存浪費(fèi),又使得每個(gè)實(shí)例化的子類互不影響。 寫在前面 既然是淺談,就不會(huì)從原理上深度分析,只是幫助我們更好地理解... 面向?qū)ο笈c面向過程 面向?qū)ο蠛兔嫦蜻^程是兩種不同的編程思想,剛開始接觸編程的時(shí)候,我們大都是從面向過程起步的,畢竟像我一樣,大家接觸的第一門計(jì)算機(jī)語言大概率都是C語...
閱讀 3519·2023-04-25 15:52
閱讀 590·2021-11-19 09:40
閱讀 2617·2021-09-26 09:47
閱讀 1035·2021-09-22 15:17
閱讀 3559·2021-08-13 13:25
閱讀 2238·2019-08-30 15:56
閱讀 3473·2019-08-30 13:56
閱讀 2112·2019-08-30 11:27