国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【基礎(chǔ)類】—面向?qū)ο箢愊到y(tǒng)性學(xué)習(xí)

這篇具有很好參考價值的文章主要介紹了【基礎(chǔ)類】—面向?qū)ο箢愊到y(tǒng)性學(xué)習(xí)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、類與實例

1. 類的聲明

  1. 構(gòu)造函數(shù)模擬一個類
function Animal () {
	this.name = 'name'
}
  1. ES6 Class聲明
//  類名
class Animal2 {
    // 構(gòu)造函數(shù)
	constructor () {
		// 屬性
		this.name = name
	}
}

2.生成實例

  1. 通過 new 實例化一個類
console.log(new Animal(), new Animal2())
// PS: 類沒有參數(shù)時,可以省略括號
console.log(new Animal, new Animal2)

二、類與繼承

1.如何實現(xiàn)繼承

  1. 借助構(gòu)造函數(shù)實現(xiàn)繼承
function Parent1 () {
	this.name = 'parent1';
}
function Child1 () {
	// call/ apply 改變函數(shù)運行的上下文, Parent1再子類的構(gòu)造函數(shù)執(zhí)行,同時修改了父類this的指向到child內(nèi)部,從而導(dǎo)致父類的屬性都會掛載到子類這個實例上
	Parent1.call(this);
	this.type ='child1'
}

console.log(new Child1())
Child1 {name: 'parent1', type: 'child1'}

缺點: Parent1的原型上的屬性和方法,并沒有被child所繼承。

Parent1.prototype.say = function () {
	console.log('你好')
}
Child1 下沒有say方法

總結(jié):只實現(xiàn)了部分繼承,如果父類的屬性都在構(gòu)造函數(shù)里面,完全可以實現(xiàn)繼承,如果父類的原型對象上還有方法或?qū)傩?,那么子類是無法拿到方法或?qū)傩缘?/p>

  1. 借助原型鏈實現(xiàn)繼承
function Parent2 () {
	this.name = 'parent2';
}
function Child2 () {
	this.type = 'child2'
}
Child2.prototype = new Parent2();
// prototype 是子類構(gòu)造函數(shù)的一個屬性,這個屬性是一個對象,這個對象是可以任意賦值的,這個對象賦值了一個Parent2的實例
// new Child2() 生成一個新的實例, new Child2.__proto__ === Child2.prototype === new Parent2()
console.log(new Child2())
function Parent2 () {
	this.name = 'parent2';
    this.play = [1,2,3]
}
function Child2 () {
	this.type = 'child2'
}
Child2.prototype = new Parent2();

var s1 = new Child2();
var s2 = new Child2();
console.log(s1.play, s2.play)
(3) [1, 2, 3] (3) [1, 2, 3]
s1.play.push(4);
console.log(s1.play, s2.play)
(4) [1, 2, 3, 4] (4) [1, 2, 3, 4]

缺點:因為原型鏈的原型對象是共用的,所以修改原型對象的屬性,其他實例也會受影響

s1.__proto__  === s2.__proto__
true
  1. 組合方式繼承
function Parent3 () {
	this.name = 'parent3'
	this.play = [1,2,3]
}
function Child3 () {
	Parent3.call(this);
	this.type = 'child3'
}
Child3.prototype = new Parent3();
var s3 = new Child3();
var s4 = new Child3();
s3.play.push(4)
console.log(s3.play, s4.play)
(4) [1, 2, 3, 4] (3) [1, 2, 3]
缺點:Parent3.call(this)new Parent3() , Parent3 執(zhí)行了2
  1. 組合方式繼承優(yōu)化1
function Parent4 () {
	this.name = 'parent4'
	this.play = [1,2,3]
}
function Child4 () {
	Parent4.call(this);
	this.type = 'child4'
}
Child4.prototype = Parent4.prototype;
var s5 = new Child4();
var s6 = new Child4();
s5.play.push(4)
console.log(s5.play, s6.play)
// (4) [1, 2, 3, 4] (3) [1, 2, 3]
// s5 是否Child4的實例, s5 是否是Parent4的實例
console.log(s5 instanceof Child4, s5 instanceof Parent4)
// true true
s5.constructor
? Parent4 () {
	this.name = 'parent4'
	this.play = [1,2,3]
}

缺點:無法區(qū)分構(gòu)造函數(shù)的實例,是由父類創(chuàng)造的還是有子類創(chuàng)造的文章來源地址http://www.zghlxwxcb.cn/news/detail-632272.html

  1. 組合方式繼承優(yōu)化2
function Parent5 () {
	this.name = 'parent5'
	this.play = [1,2,3]
}
function Child5 () {
	Parent5.call(this);
	this.type = 'child5'
}
// 通過中間對象的方法,把父類和子類區(qū)分開
Child5.prototype = Object.create(Parent5.prototype)
Child5.prototype.constructor = Child5
var s7 = new Child5();
console.log(s7 instanceof Child5, s7 instanceof Parent5)
console.log(s7.constructor)
true true
? Child5 () {
	Parent5.call(this);
	this.type = 'child5'
}

2.繼承的幾種方式

  1. 借助構(gòu)造函數(shù)實現(xiàn)繼承
  2. 借助原型鏈實現(xiàn)繼承
  3. 借助構(gòu)造函數(shù)和原型鏈實現(xiàn)組合繼承

到了這里,關(guān)于【基礎(chǔ)類】—面向?qū)ο箢愊到y(tǒng)性學(xué)習(xí)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • C/C++網(wǎng)絡(luò)編程基礎(chǔ)知識超詳細(xì)講解第一部分(系統(tǒng)性學(xué)習(xí)day11)

    目錄 前言 一、網(wǎng)絡(luò)的含義與構(gòu)成 含義: 構(gòu)成:? 二、網(wǎng)絡(luò)的體系結(jié)構(gòu) 1OSI七層模型 2TCP/IP協(xié)議體系結(jié)構(gòu)? 3數(shù)據(jù)經(jīng)過體系結(jié)構(gòu),怎么封裝?? 4端口號 5大小端序 6TCP/UDP傳輸層的協(xié)議? 三、系統(tǒng)函數(shù)API學(xué)習(xí)框架(TCP)? ?? 服務(wù)器(優(yōu)先): ?客戶端: 四、服務(wù)器和客戶端代碼實

    2024年02月08日
    瀏覽(26)
  • C/C++網(wǎng)絡(luò)編程基礎(chǔ)知識超詳細(xì)講解第三部分(系統(tǒng)性學(xué)習(xí)day13)

    C/C++網(wǎng)絡(luò)編程基礎(chǔ)知識超詳細(xì)講解第三部分(系統(tǒng)性學(xué)習(xí)day13)

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 懶大王感謝大家的關(guān)注和三連支持~ ?? 目錄 前言 一、并發(fā)服務(wù)器 1.進(jìn)程并發(fā)服務(wù)器 實例代碼如下:? 2.線程并發(fā)服務(wù)器 實例代碼如下:? 二、域通信 域通信TCP實例代碼如下:? 三、廣播與組播(UDP)? 1.廣播 實例代碼

    2024年02月05日
    瀏覽(22)
  • 如何系統(tǒng)性的學(xué)習(xí)Python語言

    如何系統(tǒng)性的學(xué)習(xí)Python語言

    零基礎(chǔ)同學(xué)的福音來了,如果你對Python語言的學(xué)習(xí)感興趣,接下來可以由淺入深的了解下Python語言,哪怕你是零基礎(chǔ)的小白也完全可以學(xué)會的,最后也會給大家放出學(xué)習(xí)和實例相結(jié)合的教程及方法,給到各位同學(xué)系統(tǒng)性的教學(xué),最重要的是免費,可真謂是學(xué)生黨們的福音呀。

    2024年02月10日
    瀏覽(24)
  • 系統(tǒng)性學(xué)習(xí)vue-組件及腳手架

    系統(tǒng)性學(xué)習(xí)vue-組件及腳手架

    書接上文 Vue腳手架是Vue官方提供的標(biāo)準(zhǔn)化開發(fā)工具(開發(fā)平臺) CLI: command line interface (命令行接口工具) 俗稱腳手架 備注: 如果下載緩慢可以配置npm淘寶鏡像: npm config set registry https://registry.npm.taobao.org Vue腳手架隱藏了所有webpack相關(guān)配置,弱項查看具體的webpack配置,請執(zhí)行 vue ins

    2024年02月02日
    瀏覽(29)
  • 初識C語言——詳細(xì)入門(系統(tǒng)性學(xué)習(xí)day4)

    初識C語言——詳細(xì)入門(系統(tǒng)性學(xué)習(xí)day4)

    目錄 前言 一、C語言簡單介紹、特點、基本構(gòu)成 簡單介紹: 特點: 基本構(gòu)成: 二、認(rèn)識C語言程序 標(biāo)準(zhǔn)格式: 簡單C程序: 三、基本構(gòu)成分類詳細(xì)介紹? ? (1) (2)數(shù)據(jù)類型 計算機(jī)中常用存儲單位 數(shù)據(jù)類型的取值范圍 打印輸入類型 (3)常量和變量 常量的分類:

    2024年02月08日
    瀏覽(29)
  • C/C++ 線程超詳細(xì)講解(系統(tǒng)性學(xué)習(xí)day10)

    C/C++ 線程超詳細(xì)講解(系統(tǒng)性學(xué)習(xí)day10)

    目錄 前言 一、線程基礎(chǔ) 1.概念 ?2.一個進(jìn)程中多個線程特征 2.1 線程共有資源 2.2 線程私有資源 ? 3.線程相關(guān)的api函數(shù) ?3.1 創(chuàng)建線程 創(chuàng)建線程實例代碼如下: ?需要特別注意的是: -lpthread和-pthread的區(qū)別 3.2 給線程函數(shù)傳參 ? 傳參實例代碼如下: 3.3 給線程收尸 收尸實例代碼

    2024年02月08日
    瀏覽(20)
  • vim的使用介紹以及命令大全(系統(tǒng)性學(xué)習(xí)day3)

    vim的使用介紹以及命令大全(系統(tǒng)性學(xué)習(xí)day3)

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 懶羊羊感謝大家的關(guān)注和三連支持~? 目錄 前言 一、vim的使用介紹 二、命令大全 1.命令模式 (1)復(fù)制(配合粘貼命令p使用) (2)剪切 (3)粘貼 (4)刪除 (5)撤銷/恢復(fù) ?(

    2024年02月08日
    瀏覽(29)
  • C/C++進(jìn)程超詳細(xì)詳解【中部分】(系統(tǒng)性學(xué)習(xí)day07)

    C/C++進(jìn)程超詳細(xì)詳解【中部分】(系統(tǒng)性學(xué)習(xí)day07)

    目錄 前言 一、守護(hù)進(jìn)程 1.概念 2.守護(hù)進(jìn)程創(chuàng)建的原理(如圖清晰可見) ?3.守護(hù)進(jìn)程的實現(xiàn)(代碼塊) 二、dup和dup2 1,復(fù)制文件描述符 2.文件描述符重定向 三、系統(tǒng)日志 1,打開日志 2,向日志中寫消息 3,關(guān)閉日志 四,文件鎖 1.概念 2,給整個文件上鎖 實例代碼如下:?

    2024年02月08日
    瀏覽(23)
  • C/C++進(jìn)程超詳細(xì)詳解【上部分】(系統(tǒng)性學(xué)習(xí)day06)

    C/C++進(jìn)程超詳細(xì)詳解【上部分】(系統(tǒng)性學(xué)習(xí)day06)

    目錄 前言 一、進(jìn)程基礎(chǔ) 1.進(jìn)程概念 2.進(jìn)程特征 3.進(jìn)程狀態(tài)(如圖清晰可見) 4,進(jìn)程的標(biāo)識 實例代碼如下: 5.進(jìn)程的種類 實例shell腳本程序如下: 二、進(jìn)程API 1.創(chuàng)建子進(jìn)程 實例代碼如下: 2.exec函數(shù)族 ?函數(shù)族講解圖如下所示: 實例代碼如下所示:? 3.結(jié)束進(jìn)程 實例代碼如下

    2024年02月08日
    瀏覽(14)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包