克隆物件及繼承
阿新 • • 發佈:2019-01-07
克隆物件可以通過forin克隆或者object.create()克隆
for in 克隆 不管公有的還是私有的都克隆成私有的
object.create()將obj的所有屬性克隆到obj2的原型上
物件的繼承
1.原型的繼承:將父類的例項賦值給予類的原型
2.call繼承 :將父類私有的繼承為子類私有的
3.冒充物件繼承:將父類私有的和共有的都繼承為子類私有的
4.混合繼承 私有的繼承私有的,公有的和私有的再次繼承公有的
5.組合繼承:私有的繼承為私有的 公有的繼承為公有的
6.中間繼承:將arguments的原型執行Array內建類的原型。
面向物件的三大特點:封裝 繼承 多型/過載
封裝:減少程式碼冗餘,提高程式碼的重複使用率。
繼承:子類繼承父類的屬性。
多型:
現在學習的js是EcmaScript2014(ES5) 生成類靠建構函式,ecmascript2015(es6)用class生成類。
constructor 構造器
- 瀏覽器給每個類(函式)天生賦予一個prototype的屬性,這個屬性是一個物件,裡面有個constructor的屬性,叫構造器,指向當前的類本身
- 人為改變類的原型指向(給prototype賦值引用資料型別,基本資料型別不改變),瀏覽器賦予的constructor屬性就不存在了可以人為新增。如果是簡單的基本資料型別constructor還存在。
- 類在程式碼中扮演著三種角色,普通函式,普通物件,類
- 每個物件天生有一個__proto__的屬性,叫原型,他指向父類的原型,obj.__proto__==Person.prototype true
5.prototype和__proto__都叫原型,前者是函式的屬性,後者是物件的屬性,前者給程式設計師使用後者是瀏覽器用於查詢原型的。
This指向78
物件繼承
- 克隆物件不是將一個物件賦值給另一個物件,var obj1=obj2這不是物件克隆,是把obj2的引用地址賦值給obj1.
- 通過for in 和Object.create()克隆物件
For in克隆的屬性都是私有的,create()得到的屬性都是公有的在原型上。
繼承