摘要:之面向?qū)ο髮?duì)象類型數(shù)據(jù)類型分六類簡(jiǎn)單類型五種復(fù)雜類型其中也屬于基本類型。
js之面向?qū)ο?OOP) js對(duì)象類型(Object)
js數(shù)據(jù)類型分六類,簡(jiǎn)單類型:Undefined,Null,Bollean,Number,String五種,復(fù)雜類型:Object.
其中Undefined、Null、Boolean、Number也屬于基本類型。Object、Array和Function則屬于引用類型
其中Null類型表示一個(gè)空對(duì)象引用,typeof (null類型)會(huì)返回object
簡(jiǎn)單類型和復(fù)雜類型之間的關(guān)系:js中一切皆對(duì)象,所以以上簡(jiǎn)單類型也是對(duì)象,但是創(chuàng)建方法不同,利用typeof 檢測(cè)類型時(shí)結(jié)果也不同.(這個(gè)typeof真是沒啥用).例如下例中兩個(gè),但是本質(zhì)上都是對(duì)象.
var name = String("jwy"); alert(typeof name);//"object" var author = "Tom"; alert(typeof author);//"string"盤點(diǎn)JS面向?qū)ο笾^承 原型鏈
即利用原型鏈讓一個(gè)引用類型繼承另一個(gè)應(yīng)用類型的方法和屬性.
缺點(diǎn):
重寫了原有的prototype,constructor指向了超類.
prototype是超類的實(shí)例,因此超類屬性會(huì)被所有子類實(shí)例共享.
創(chuàng)建子類實(shí)例時(shí),不能向超類構(gòu)造函數(shù)傳參.
function Subtype(){ //構(gòu)造函數(shù) } Subtype.prototype = new Supertype();借用構(gòu)造函數(shù)(經(jīng)典繼承)
即在子類構(gòu)造函數(shù)中調(diào)用超類構(gòu)造函數(shù),通過call或者apply來綁定上下文對(duì)象.
function Subtype(){ Supertype.call(this);//也可傳參 }
缺點(diǎn):
和構(gòu)造函數(shù)模式一樣,方法在構(gòu)造函數(shù)中定義,因此就無法實(shí)現(xiàn)函數(shù)復(fù)用(作為方法)
在超類型的原型中定義的方法,對(duì)子類型而言也是不可見的
組合繼承(偽經(jīng)典繼承)即原型鏈+經(jīng)典繼承,利用原型鏈繼承原型屬性和方法,利用借用構(gòu)造函數(shù)繼承實(shí)例屬性
function SuperType (name) { this.name = name; this.color = ["red"]; } SuperType.prototype.sayName = function () { console.log(this.name) } function SubType (name,age) { SuperType.call(this,name) this.age = age; } SubType.prototype = new SuperType(); SubType.constructor = SubType; SubType.prototype.sayAge = function () { console.log(this.age) } var subInstance = new SuperType("zchang",11); var subInstance1 = new SuperType("zc",18);寄生式繼承
即創(chuàng)建一個(gè)僅用于封裝繼承過程的函數(shù),該函數(shù)在內(nèi)部以某種方式來增強(qiáng)對(duì)象,最后返回該對(duì)象.
function createAnother (origin) { var clone = objects(origin);//某個(gè)函數(shù)創(chuàng)建新對(duì)象 clone.sayHi = function () { console.log("hi") } return clone; }組合寄生式繼承
function SuperType(name) { this.name = name; this.color = ["red"]; } SuperType.prototype.sayName = function() { console.log(this.name) } function SubType(name, age) { SuperType.call(this, name) this.age = age; } // SubType.prototype = new SuperType(); function inheritPrototype(subtype, supertype) { var prototype = object(supertype); prototype.constructor = subtype; subtype.prototype = prototy } inheritPrototype(SubType, SuperType); SubType.prototype.constructor = SubType; SubType.prototype.sayAge = function() { console.log(this.age) } var subInstance = new SuperType("zchang", 11); var subInstance1 = new SuperType("zc", 18);
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/81866.html
摘要:避免脆弱的基類問題。紅牌警告沒有提到上述任何問題。單向數(shù)據(jù)流意味著模型是單一的事實(shí)來源。單向數(shù)據(jù)流是確定性的,而雙向綁定可能導(dǎo)致更難以遵循和理解的副作用。原文地址 1. 你能說出兩種對(duì) JavaScript 應(yīng)用開發(fā)者而言的編程范式嗎? 希望聽到: 2. 什么是函數(shù)編程? 希望聽到: 3. 類繼承和原型繼承的不同? 希望聽到 4. 函數(shù)式編程和面向?qū)ο缶幊痰膬?yōu)缺點(diǎn)? ...
摘要:而在面試過程中,也是經(jīng)常會(huì)遇到的,所以,無論是面試準(zhǔn)備還是日常開發(fā),我們都應(yīng)該關(guān)注這方面的東西。二分法的基本做法是確定要查找的區(qū)間。區(qū)間內(nèi)選取二分點(diǎn)。根據(jù)二分點(diǎn)的值,綜合左右區(qū)間情況以及求解的目的,舍去一半無用的區(qū)間。 showImg(https://images.pexels.com/photos/935977/pexels-photo-935977.jpeg); 前言 面試是你進(jìn)入...
摘要:道阻且長(zhǎng)啊前端面試總結(jié)前端面試筆試面試騰訊一面瀏覽器工作原理瀏覽器的主要組件包括用戶界面包括地址欄后退前進(jìn)按鈕書簽?zāi)夸洖g覽器引擎用來查詢及操作渲染引擎的接口渲染引擎渲染界面和是基于兩種渲染引擎構(gòu)建的,使用自主研發(fā)的渲染引擎,和都使用網(wǎng)絡(luò)用來 道阻且長(zhǎng)啊TAT(前端面試總結(jié)) 前端 面試 筆試 面試 騰訊一面 1.瀏覽器工作原理 瀏覽器的主要組件包括: 用戶界面- 包括地址欄、后退/前...
摘要:道阻且長(zhǎng)啊前端面試總結(jié)前端面試筆試面試騰訊一面瀏覽器工作原理瀏覽器的主要組件包括用戶界面包括地址欄后退前進(jìn)按鈕書簽?zāi)夸洖g覽器引擎用來查詢及操作渲染引擎的接口渲染引擎渲染界面和是基于兩種渲染引擎構(gòu)建的,使用自主研發(fā)的渲染引擎,和都使用網(wǎng)絡(luò)用來 道阻且長(zhǎng)啊TAT(前端面試總結(jié)) 前端 面試 筆試 面試 騰訊一面 1.瀏覽器工作原理 瀏覽器的主要組件包括: 用戶界面- 包括地址欄、后退/前...
閱讀 1207·2021-09-03 10:44
閱讀 602·2019-08-30 13:13
閱讀 2795·2019-08-30 13:11
閱讀 1966·2019-08-30 12:59
閱讀 1033·2019-08-29 15:32
閱讀 1594·2019-08-29 15:25
閱讀 986·2019-08-29 12:24
閱讀 1276·2019-08-27 10:58