1. 程式人生 > >克隆物件及繼承

克隆物件及繼承

克隆物件可以通過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 構造器

  1. 瀏覽器給每個類(函式)天生賦予一個prototype的屬性,這個屬性是一個物件,裡面有個constructor的屬性,叫構造器,指向當前的類本身
  1. 人為改變類的原型指向(給prototype賦值引用資料型別,基本資料型別不改變),瀏覽器賦予的constructor屬性就不存在了可以人為新增。如果是簡單的基本資料型別constructor還存在。
  2. 類在程式碼中扮演著三種角色,普通函式,普通物件,類
  3. 每個物件天生有一個__proto__的屬性,叫原型,他指向父類的原型,obj.__proto__==Person.prototype  true

5.prototype和__proto__都叫原型,前者是函式的屬性,後者是物件的屬性,前者給程式設計師使用後者是瀏覽器用於查詢原型的。

This指向78

物件繼承

  1. 克隆物件不是將一個物件賦值給另一個物件,var obj1=obj2這不是物件克隆,是把obj2的引用地址賦值給obj1.
  2. 通過for in 和Object.create()克隆物件

For in克隆的屬性都是私有的,create()得到的屬性都是公有的在原型上。

繼承