首先是定義:什麼是物件
物件就是屬性的無序集合, 每個屬性存放乙個 原始值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 使用特殊操作符 訪問...