Js里面具有對象的概念,但是沒有類的概念囤萤。原型對象涛舍。
面向?qū)ο螅簅op
class 人類 {}
張三= new 人類()
1.對象的概念:
Js一切皆對象。number,string肛搬,DOM温赔,BOM鬼癣,array全部都是對象.
字面量:一看就知道是啥。
2.申明方式
第一種:{} ;空的對象
第二種拜秧;new Object ( )
- 對象的鍵
對象具有內(nèi)容時由鍵值對組成锥余。前面的名字就是對象的值驱犹,后面值就是對象鍵的值。
鍵值對是成對出現(xiàn)的佃牛,不能單獨存在。
對象的鍵都是字符串医舆,所以前面鍵名在定義的時候不需要添加引號俘侠,而對象的值可 以是任何數(shù)據(jù)類型,所以對象的值如果是字符串蔬将,那么需要添加引號爷速。 - 對象的鍵的字符串特性
如果鍵是數(shù)字格式的,那么先轉(zhuǎn)化成標準數(shù)字霞怀,在轉(zhuǎn)化為字符串惫东。 - 特殊的鍵名
以數(shù)字開頭的,但是里面包含有字母的鍵名就是特殊的鍵名毙石。
不符合標識符命名規(guī)范的鍵名就是不標準鍵名廉沮。
具有特殊簡明的需要給鍵名添加引號。而且訪問的時候只能使用中括號的形式訪問徐矩。 - 屬性與方法的概念
對象中鍵就叫做對象的屬性。鍵的值叫做屬性值滤灯。
如果一個對象的屬性的值是一個函數(shù)坪稽。那么我們稱這樣的屬性叫做方法曼玩。
屬性值是函數(shù)的叫做對象方法。
屬性值不是函數(shù)的叫做對象屬性刽漂。 - 對象的動態(tài)屬性演训。
一個對象在申明的時候弟孟,不一定會申明所有的屬性贝咙,有些屬性是可以后來添加的, 這種能夠給對象添加屬性的方法叫做對象的動態(tài)屬性拂募。
var p1{
name:”zhangsan”,
age:18,
};
var p2 {};
p2.name=”lisi”,
p2,age=”19”;
- 對象的格式
對象的字面量就是一對大括號庭猩。
里面是成對的鍵值對,也就是屬性陈症。
每一個鍵值對之間使用一個逗號隔開蔼水。最后一個可以不加逗號。
9.表達式录肯?還是對象趴腋?
{
foo:”bar”
}
在JS V8 引擎規(guī)定,這樣的語法統(tǒng)一認為是一個對象论咏。
10.對象的引用
對象的傳遞和普通數(shù)據(jù)類型的傳遞是不一樣的优炬。
值傳遞與地址傳遞。
簡單數(shù)據(jù)類型的傳遞使用的是值傳遞厅贪。
對象數(shù)據(jù)類型的傳遞使用的是地址傳遞蠢护。
對象的別名一旦數(shù)據(jù)類型發(fā)生變法,那么與原來對象之間地址引用就發(fā)生了改變养涮。
11.對象的屬性
屬性的獲瓤丁:兩種方式
- 對象名 . 屬性名
- 對象名[‘屬性名’]
所有使用點操作的方式都是可以替換成中括號形式的。
特殊情況:
如果屬性名是數(shù)字贯吓,那么只能使用中括號方式懈凹。
如果屬性是一個變量的情況也只能使用中括號,只是不加引號悄谐。
屬性的賦值: - 對象 . 屬性名 = 值介评;
- 對象[‘屬性名’] = 值;
oDiv.innerHTML
對象的屬性可以使用delete刪除尊沸。
刪除成功返回true威沫。刪除不存在的屬性也是返回true,所以不能使用delete的返回值判斷一個屬性是否被刪除洼专。
12.對象的遍歷
in 操作符:可以判斷某一個對象是否具有某個屬性棒掠。
for …... in :遍歷對象
while 不能循環(huán)對象。
13.with
但是不推薦使用屁商。推薦使用臨時變量代替一長串對象操作烟很。
14.嚴格模式
使用:”use strict”
- 腳本開始的位置(不利于js文件的合并)
- 函數(shù)開始的位置
- 腳本改良版颈墅,使用立即函數(shù)包含。
產(chǎn)生的影響: - 禁用with語法
- 變量必須申明
- eval的作用域雾袱,并且eval與arguments作為關(guān)鍵字
- 全局函數(shù)this指向undefined
- 對象字面量重復(fù)屬性名報錯
- 禁止使用八進制
15.代碼規(guī)范
縮進:一個tab或者四個空格恤筛。
區(qū)塊括號:
If(){
}
圓括號:函數(shù)調(diào)用,函數(shù)申明沒有空格 func()
分號:每一句代碼結(jié)束的時候要加上分號芹橡。
function say(){
}
var say = function(){
};
(function(){
})();
全局變量:一般要避免使用全局變量毒坛,因為會產(chǎn)生污染×炙担可以使用立即函數(shù)避免全 局變量煎殷。避免不了使用全局變量,那么請使用大寫腿箩。var USER_NAME
盡量使用嚴格相等
不用不申明變量直接使用豪直。