js之物件導向

來源:互聯網
上載者:User

標籤:數組   學習   優先   模式   對象   rip   get   app   迴圈對象   

本文的物件導向分為ES6和ES6之前的,重點學習ES6的
===============================
一、物件導向
1、什麼是物件導向
  a)什麼是對象:萬物都可以抽象成對象
    時間對象
    var oDate=new Date();(我們經常var的oDate就是一個時間對象)
    oDate.getFullYear();(建立的oDate就繼承了Date裡面的所有方法)
    數組
    var arr=new Array();
    arr.sort();
    arr.length;
    json{
      name:‘aa‘,
      showName:function(){
        alert(1);
      }
    }
    json.name;(json對象的屬性)
    json.showName();(json對象的方法)
  b)物件導向是一種思想:
    我們只關心怎麼去用,不關心裏面是怎麼實現的
    提高了效率

2、怎麼去物件導向
  a)先要有一個對象
    對象都有特徵,都有屬性和方法

    屬性 屬性就是變數,只不過他有依附關係
    特徵 變數 自由的,獨立的

    方法 就是函數,只不過他有依附關係

    函數 獨立的

  b)造對象
    1、var arr=[];
    批量造對象

  c)建構函式:用來造對象的函數,建構函式也是函數,只是因為用途而得名,為了和普通函數做區別,首字母大寫就是建構函式

  d)this 想要學好物件導向 必須知道this指向誰
    new是幹什麼的
    1、會在建構函式開始的位置建立一個Null 物件(並且把this指向Null 物件);
    2、自動返回Null 物件

  e)屬性不同的,方法是相同的
    是ES6之前物件導向的核心:原型

  f)物件導向怎麼寫: 構造原型混合模式
    1、構造身上加屬性
    2、原型身上加方法 prototype

      function Person(name,age){
        //添加屬性和方法
        this.name=name;
        this.age=age;
      }
      Person.prototype.showName=function(){
        alert(‘我是舞王‘+this.name);
      };

      g)prototype 也是對象
        1、寫物件導向是為了擴充系統方法

      h)arr.indexOf()

        練習題:
          時間對象裡面 getDay 0-6 0星期天
          getCnDay 星期一 --- 星期日

-----------------------------------
二、總結:
  1.什麼是對象:
    一切都是對象
  2.什麼是物件導向:
    只關心怎麼調用,不關心怎麼實現的
  3.怎麼寫一個類 就是一個建構函式
    屬性加在構造身上
    方法加在原型身上

    function Person(...){
      this.XX=XXX //加屬性
    }
    Person.prototype.XXX=function(){}; //加方法
  4.怎麼去造一個對象
    new 類名()
    eg var barry=new Person();(barry獲得person的屬性和方法)
  5.new 都幹了什麼
    1)、造一個Null 物件,並把this指向對象
    2)、返回這個對象
  6.prototype原型:
    1)、可以寫物件導向
    2)、可以擴充系統的方法
  7.原型和原型鏈的區別
    原型prototype 就是一個對象,存在於每個對象身上
    原型鏈:就是因為有prototype的存在,js產生了原型鏈
  8.ECMAScript 裡面的方法都是用原型寫的

    類 在js裡面類就是建構函式
    執行個體 建構函式調用完返回的對象

  9.物件導向--一種思想

  10.物件導向的特徵:
    封裝 抽象了事物的核心
    多態 一個事物可以繼承多個親屬的特徵
    繼承 事物得到了父親的一些特徵
-----------------------------------
11.object
  instanceof 檢測一個物體的血緣關係
    子級 instanceof 父級 返回true false
  constructor 物體是由那個構造器誕生的
    子級.constructor==父級 返回true false

  封裝類(是java裡面的)
  簡寫的資料類型object不認。
12.this 有優先順序 從上到下,優先順序變小
  new object
  定時器 window
  事件 觸發事件的對象
  對象 對象
  show() window
13.繼承 子級繼承父級的功能
  給父級一個功能,子級預設就有

  玩繼承:
  屬性
  在子級的構造中,調用父級的構造
  function 子級(name,age){
    //父級.call(this,name,age);
    父級.apply(this,arguments);
  }
  方法
  1、son.prototype=father.prototype;
    問題:子級改了父級也改變
  2、for(var name in father.prototype){
    son.prototype[name]=father.prototype[name];
  }
    問題:孩子不認爺爺
  3、 子級.prototype=new 父級();
    問題:子級的孩子不認子級
  終極版:子級.prototype.constructor=子級;
-----------------------------------------------
三、ES6
  1.對象
    let name=‘張三‘;
    let json={
      name,
      showName(){
        alert(this.name)
      }
    }
  2.物件導向
  class Person{ //類
    constructor(name,age){ //構造 屬性加在構造身上
      this.name=name;
      this.age=age;
    }

    showName(){
      alert(this.name);
    }

    showAge(){
      alert(this.age);
    }
  }
  3.繼承
    class Student extends Person{
      constructor(name,age,job){
        super(name,age);//super在這裡就是向上越級繼承父級的屬性
        this.job=job;本身又加的屬性
      }

      showJob(){
        alert(this.job);
      }
    }

-------------------------------------------------

ES6之前建構函式裡子級繼承父級的屬性
  函數名.call(this的指向,參數。。。。)針對多個參數的情況,不確定數量
  函數名.apply(this的指向,[參數,參數。。。。]);

------------------
對象引用
js為了節省空間的,採取的一種行為;
var arr=[1,2,3];
var arr2=arr;
------------------
for-in 通過對象的屬性進行迴圈
用來迴圈對象的。但是能用for迴圈就不用for-in

for var i=0;i<10;i++
-------------------

json{

"a":"1",

"b":"2",

"c":"3"

}

 for(var v in json){

  console.log(v);//列印出1,2,3

 }

 

js之物件導向

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.