-
原型和原型鏈
方式:1.萬物皆對象,萬物皆空
? ? ? ? ?2.兩個定義:原型:保存所有子對象的共有屬性值和方法的父對象
? ? ? ? ? ? ? ? ? ? ? ? ? ? 原型鏈:由各級子對象的__proto__屬性連續引用行成的結構
?????????3.三個屬性:__proto__,constructor,prototype
當函數創建的時候就會攜帶上一個prototype屬性,這個屬性指向prototype對象,也就是原型對象
原型對象攜帶constrcuctor
實例化會攜帶__proto__,并且是所有js對象都會攜帶,都是js內部屬性
掛載在函數內部的方法,實例化對象內部回復制構造函數的方法
掛載在原型上的方法,不會去復制.
掛載在內部和原型上的方法都是可以通過實例去調用的
一般來說,如果需要訪問構造函數內部的私有變量,我們可以定義在函數內部,其它情況我們可以定義在函數的原型上
總結
? ? 1.所有對象都會攜帶p1.__proto__,p1.__proto__===Person.prototype
? ? ?2.Person.prototype.constructor===Person
查看全部 -
什么是對象?
具備私有屬性
只要是new出來的都是對象
不同對象肯定不相等
對象都會有引用機制 堆棧
Js中晚物皆對象? Array Date Object Function String.....
面向對象:(可以說是初級和中級的一個分水嶺)
把任何的數據和行為抽象成一個形象的對象,類似于人生活中思考的方式
類:對象(Object)的模版,定義了同一組對象(又稱"實例")共有的屬性和方法
面向對象OOP:封裝 繼承 多態
繼承:子繼承父
封裝:方法 run :function(){}
多態:重載,重寫
查看全部 -
Js多參數方法。查看全部
-
js面向對象OOP
繼承 子繼承父
封裝 方法run:function(){}
多態:重載 重寫
查看全部 -
毒販夫婦付付付付付付付付付付付付付付
查看全部 -
到付到付付付付付付付付付付付付付付付付付付付付付付付付付付
查看全部 -
總結:? ?
????算法? 數據結構? 設計模式
查看全部 -
Object.defineProperty()方法
????應用場景、
????Object.defineProperty(obj,prop,descriptor)
????????obj:需要定義屬性的對象
????????prop:需要定義的屬性
????????descriptor:屬性的描述描述符
????????返回值:返回此對象
查看全部 -
繼承:子繼承父
JS繼承的方式6種:
????簡單原型鏈:類式繼承
????借用構造函數:缺點=>父類的原型方法自然不會被子類繼承
????組合繼承(最常用):類式繼承+構造函數繼承
????寄生組合繼承(最佳方式):寄生式繼承+構造函數式繼承
????原型式:跟類式繼承一樣,父類對象book中的值類型的屬性被賦值,引用類型的屬性被共有
????寄生式:通過在一個函數內的過度對象實現繼承并返回新對象的方式
查看全部 -
原型相關的API判斷對象的屬性是自有的還是私有的;hasOwnProperty、isPrototypeOf、getPrototypeOf
????hasOwnProerty:obj.hasOwnProperty('屬性名') // 判斷這個屬性是不是這個對象的私有屬性,返回布爾值
????isPrototypeOf:是用來判斷指定對象obj1是否存在于另一個對象obj2的原型鏈中,是則返回true,否則返回false
????getPrototypeOf:是ES5中用來得到obj對象的原型對象的標準方法
查看全部 -
構造函數構建類
????函數對象
????????定義:主要是通過Function對象創建的
?????普通對象
?????????定義:主要是通過object對象創建的
?????通過構造函數創建對象
????????
什么是原型,什么是原型鏈。 __proto__、prototype、constructor
????原型和原型鏈
????????方式:1,2,3
????????????1:一句話 萬物皆對象,萬物皆空
????????????2: 二個定義:原型:保存所有子對象的共有屬性值和方法的父對象、
????????????????????????????????原型鏈:由各級子對象的__proto__屬性連續引用形成的結構
????????????3:三個屬性:__proto__、constructor、prototype
????????掛載在函數內部的方法,實例化對象內部會復制構造函數的方法
????????掛載在原型上的方法,不會去復制。
????????掛載在內部和原型上的方法都是可以通過實例去調用的
????????一般來說,如果需要訪問構造函數內部的私有變量,我們可以定義在函數內部,其他情況我們可以定義在函數的原型上
????????總結:
????????????1、所有對象都會攜帶p1.__proto__
????????????2、實例的原型指向構造函數的原型
????????????
查看全部 -
this 坑
????this用法:
????????1、????指代當前調用的這個對象:4種綁定規則分別是:默認綁定、隱式綁定、顯示綁定、new綁定。優先級從低到高。
????this 指向
????????如果出現函數套函數,可以使用變量緩存this使用
????改變this指向
????????
查看全部 -
new 的執行過程
?????????1 創建一個新對象
????????? 2 把obj的proto指向構造函數的prototype對象 實現繼承
????????????3 將新創建的對象obj作為this的上下文
????????????4 返回創建的對象obj(如果該函數沒有返回對象,則返回this)
查看全部 -
類數組轉數組 slice function
?????var arr =Array.prototype.slice.apply(arguments) // arguments
bind : 類似call 但是與其不同的是call調用之后可以立即執行,但是bind需要用一個變量進行接收之后再執行
查看全部 -
閉包的概念:?
????作用域,1.是引用了自由變量的函數這個被引用的自由變量將和這個函數異同存在,即使已經離開了創造它的環境也不例外。所以,有另一種說法認為閉包是由函數和其相關的引用環境組合而成實現信息的駐留(信息的保持,引用在,空間不銷毀)? ?
?????//? ++ 前加取新值,后加取舊值
????閉包的缺點:閉包導致內存會駐留,如果是大量對象的閉包環境注意內存消耗? ? ?
閉包的使用:
查看全部
舉報