oop物件導向

2021-08-01 15:41:34 字數 3201 閱讀 2427

首先是定義:什麼是物件

物件就是屬性無序集合,  每個屬性存放乙個  原始值or物件or函式

既然是屬性的無序集合,那麼屬性的含義顧名思義,那麼屬性是什麼:

屬性就是乙個個的鍵值對.     也就是   屬性名:屬性

一分為二,

首先是屬性名: 什麼可以做屬性名,  既然屬性的名字,所以我們一般是用字串來命名的,當然,如果自己樂意.也可以用 _ 數字 等這些符號.起名的時候我們一般是按規範要加引號的,當然不加也行,

其次是屬性值: 任意的資料都可以儲存在屬性值中, 5基本3引用都可以用來做屬性值.

物件導向的三個特點:封裝繼承多型

1.    封裝 封裝這個玩意,在js中實在是簡單,只要把變數 你不想讓外界訪問的東西放在乙個function中就可以了. 變成區域性變數就相當於被封裝了.

特點:低耦合高內聚 減少**冗餘

2.    繼承 同樣簡單,只要在function下寫function就可以了

3.    多型, 在其他語言中,多型是指過載和重寫

a)     過載:在其他語言中,兩個方法的名字相同,引數不同,會認為是兩個方法.

b)     重寫:子類重寫父類的方法.

在js中

a)    過載:不存在過載一說.js中如果兩個方法名字相同,後面的會把前面的覆蓋掉

js的多型,個人暫時認為是:乙個方法,不同的物件呼叫他就會有不同的結果,但他們都是呼叫的這個方法,卻產生不同的結果,所以就把這種特性叫作多型.

ps:在其他語言中,一般是有抽象這個玩意的,即類與物件,但是js沒有類,js只有物件

js中物件的分類

1.    內建物件2.宿主物件3.自定義物件

一.    內建物件

1.     本地物件  例如:object functionarray string boolean number data

a)     本地物件它是函式, 當然,在js中函式也是一類特殊的物件(陣列也是一類特殊的物件),

b)     本地物件這個函式的特殊點在於他可以用來建立物件.我們稱之為構造器.   var abc = new array();

2.     單體內建物件

a)     單體,也就是只有乙個物件

b)     gloale物件和math物件 在使用的時候不用加new

c)     比如 當定義乙個math物件的時候我們可以這樣定義,   

var a = math()但是絕對不可以這樣定義

var a = new math();,這樣是會報錯的

二.  宿主物件

js是乙個指令碼語言,它只能寄宿在某個環境中才能執行.即:

1.     瀏覽器端也就是瀏覽器

a)     對瀏覽器端的js在而言,宿主物件u是瀏覽器物件例如                                window,document,history 等

b)     當然,在不同的瀏覽器端使用也是不一樣的,例如dom二級繫結事件中在ie中和其他瀏覽器就不一樣, attachevent()和addeventlister()

2.     伺服器端 node.js等

三.  自定義物件

也就是自己寫的物件

ps:前面說到,global物件,它在瀏覽器端是沒有的global的,我們無法訪問這個物件,所有,這玩意給自己找了個代言人:window物件   自然,你可以通過window來訪問global物件

再說window物件,這玩意因為一切皆物件,而物件裡又只有屬性.所以在瀏覽器端的js中,所有的東西都是這玩意的屬性,alert,document console,array都是這玩意的屬性,自然的我們定義的變數函式,最後都成了這玩意的屬性

函式創造了物件,物件就是一堆屬性的集合,屬性又是鍵值對.值就是5基本3引用,引用中的函式又能創造物件.

三條定律一條鏈:三定律 一切皆物件,物件是屬性的集合,物件是函式創造的一鏈:原型鏈

下面這些東西都是物件:

a)     .console

b)     html標籤

c)     array

d)     自定義的函式

e)     基本資料型別 這個特殊,

比如var a=3;看起來這個不是物件,但是它隨時可以使用他的包裝物件的方法

比如a.tostring()

包裝物件:

常見的包裝物件 :number string boolean

理解這個玩意首先需要知道,我們定義乙個字串有兩種

1是字面量,即 var b = 『abc』;

2是構造器string 即 var b = new string(『abc』);

這兩種方法建立的字串是有區別的,通過字面量建立的字串就是乙個儲存字串的變數,而通過構造器建立的卻是乙個字串物件.而物件是可以有方法的,所以通過構造器定義的字串可以使用字串物件的函式像.substr .strike .tolocaleuppercase(轉換成大寫)這些方法的.

那麼問題產生了,為什麼字面量定義的字串也能呼叫.原因是,在字面量定義的字串b呼叫構造器方法的瞬間,瀏覽器會瞬間把b包裝成用構造器建立的字串物件,這樣就能呼叫了,

當然這裡要注意的是瞬間這個詞.只有在呼叫的時候,瀏覽器才會把他當作構造器建立的物件,所以,如果你用字面量定義了乙個東西,卻把他當作物件,去給他新增屬性,那就玩脫了.只有呼叫那一瞬間才是物件.

怎麼操作和訪問屬性呢.

訪問有兩種方法.

1是打點 . 2是中括號

打點是我們常用的方法,當然他只適合復合變數命名規範的屬性名,否則你就要使用中括號[『屬性名』]了在[ ]使用的時候,要注意加引號,否則會被當做變數來處理

[ ]裡面可以寫的東西有點多,

a)     [『屬性名』]

b)     [變數]

c)     [表示式]  例如』na』+』me』

d)      [呼叫函式]

注意表示式和呼叫函式最後肯定有乙個結果,而實際上是訪問 [『這個結果』] 的

比如function f(){

return  name;

那麼obj[ f() ]就等於是obj[『 name』 ]

操作也是兩種方法:

物件.屬性名 = 屬性值

物件[『屬性名』] = 屬性值;

OOP 物件導向

oop思想 接觸到任意乙個任務,首先想到的是這個人物的構成,是由模型構成的 幾個名詞 oo 物件導向 ooa 物件導向的分析 ood 物件導向的設計 ooi 物件導向的實現 oop 物件導向的程式設計 ooa ood ooi 物件導向的實現過程 類和物件的概念 類 抽象名詞,代表乙個集合,共性的事物...

物件導向 oop

物件導向的核心 類 物件 需要有意義的物件導向的 不是有了類就是物件導向 例項化的方法 設計層面 函式 程式運形,過程式一種稱謂 物件 物件是現實世界或者思維世界中的實體在計算機中的反映,它將資料以及這些資料上的操作封裝在一起 類 一類事物的統稱,物件是類具體化的產物,也就是例項化 不同的物件有什麼...

物件導向(OOP)

術語說明 類 class 具有相同特徵和行為的物件 物件 obj 具有特徵和行為的個體 特徵屬性,也就是變數 行為方法,也就是函式 例項 類的書寫格式以及例項化 建立物件 class name 類的例項化,結果是物件 obj new name 返回物件 var dump obj 使用特殊操作符 訪問...