1.4

  1. 克隆對象

這種寫法不是對象克隆,就是把obj的內存地址賦值給obj2.程序員

經過for in克隆  無論是公有的仍是私有的都克隆成私有的es6

 

Js提供了一個一個克隆的方法 Object.create()數組

Var obj2=Object.create(obj)  將obj的全部屬性克隆到obj2的原型上瀏覽器

 

  1. 對象的繼承

1.原型繼承:將父類的實例賦值給子類的原型ecmascript

 這就是原型繼承 將父類的私有和公有都繼承在子類的原型上,成爲子類的公有屬性。函數

2.call繼承   將父類私有的繼承爲子類私有的學習

 

3.冒充對象繼承 將父類私有的和公有的都繼承爲子類私有的prototype

 

4.混合繼承 私有的繼承爲私有的,公有的和私有的再次繼承爲公有的對象

混合繼承是call和原型繼承的結合 私有的被繼承了兩次繼承

 

  1. 組合繼承 私有的繼承爲私有的 公有的繼承爲公有的

 

  1. 中間類繼承

 

arguments 不是一個數組,沒有array的那些自帶的方法,如今咱們想arguments有array的那些方法,將arguments的原型執行Array內置類的原型。

  1. 筆記三遍
  2. 查面向對象

面向對象複習

面向對象的三大特色:封裝 繼承 多態/重載

封裝:減小代碼冗餘,提升代碼的重複使用率。

繼承:子類繼承父類的屬性。

多態:

如今學習的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指向

 

對象繼承

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

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

繼承

相關文章
相關標籤/搜索