面向對象編程(OOP)----BLUE大師JS課堂筆記


1.面向對象時,只關注對象提供的功能,不關注其內部的細節。 如JQUERY

2.面向對象時一種通用思想,並非只有編程中能用,任何事情都可以用。如公司里的上傳下達

3.面向對象編程(OOP)的特點,傳統的書本會說:多態,封裝,繼承三大特點

   應該還能理解成抽象,封裝,繼承三大特點

   抽象:抓住核心問題

   封裝:不考慮內部實現,只考慮功能使用

   繼承:從已有對象上,繼承出新的對象

4.對象的組成

    方法---------函數:過程,動態的

    屬性---------變量:狀態,靜態的

    變量和函數是自由的,屬性和方法屬於一個對象

5.this:當前的方法屬於誰,this就是指誰    除了在函數面前有new的時候

  

function Person(name,sex)
{
      this.name=name;
      this.sex=sex; 
alert(this);
}

var p1 = new Person("leo","男");

在這里的this是Object

原因是這個函數相當於

function Person(name,sex)
{
       var this = new Object();   //雖然在JS里面不能這么寫,但是差不多是這個意思,創建一個新的對象。
       this.name=name;
       this.sex=sex;          //給this對象賦屬性
       return this;             //返回this
}

6.構造對象的函數稱之為構造函數,不具備實際功能,只能用來構造對象   如:var arr = new Array();

7.工廠方式構造對象。工廠的工作流程是這樣的a.原料   b.加工    c.出廠。用工廠方式構造對象也是一樣的,首先要創建一個對象(加工),然后給對象添加方法和屬性(加工),最后返回對象(出廠)。例子:

  

function CreatePerson(name,sex)
{
      var person = new Object(); //原料
      
      person.name=name;
      person.sex=sex;
      person.show=function()
     {
          alert(this.name);
      }                                         //加工,給對象添加方法和屬性

     return person;                    //出廠,返回對象
}

 

8.工廠的方式有2個問題。問題一:沒有new;問題二:每個對象都有一套自己的函數,極其浪費資源。

   為了解決問題一:

function Person(name,sex)
{
        this.name=name;
        this.sex=sex;
}

var p1 = new Person("leo","男");

用了一個new 把構造函數內部的 創建對象和返回對象給省去了。

   為了解決問題二:

Person.prototype.show=function()
{
       alert(this.name);
}

給原型添加了方法,基於這個構造函數創建出來的對象就都具有這個方法了,而且是共用一個方法,而不是像工廠模式那樣的每個對象new一個function,這個極大地節省了資源,就像工廠生產蛋糕的模式,雖然生產出那么多得蛋糕,但是用的卻是一個模子,而不是每生產一個蛋糕就用一個模子。

類---------------------模子

對象(實例)-----------蛋糕

原型一個重要應用-----擴展功能

9.為了區別普通函數和構造函數,構造函數首字母大寫。

10.混合寫法:構造函數放屬性,原型放方法。

11.alert(typeof Date);     彈出function      因為Date是構造函數


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM