對象
對象的分類
1內建對象
ES定義的標準對象,在任何的js代碼中都可以使用
比如:Math,String,Number,Boolean,Function,Object。。。
2宿主對象
由js的運行環境提供的對象,主要指瀏覽器提供的對象
例如:BOM,DOM
3自定義對象(函數)
由開發人員自己定義的對象
創建對象
使用new調用的函數是構造函數,構造函數就是用來創建對象的。
var a = new Object();
向對象裏添加一個屬性
對象.屬性名 = 屬性
刪除一個屬性
delete 對象.屬性名
對象的屬性名很開放,可以隨便取
a['123']但調用的時候也要這樣調用
檢查一個對象裏是否有某個屬性
console.log("['123']" in a)
基本數據類型和引用數據類型
基本數據類型的值保存在棧裏,值與值之間是獨立的
let a = 123
let b = a
console.log(a)//123
console.log(b) //123
console.log(++a)//124
console.log(b)//123
引用數據類型的值保存在堆裏,棧裏保存的是值的地址。
對象字面量
{} 等價於 new Object()
{屬性:值}//創建的時候也可以添加數據
object和Function的區別
object 對象裏只能裝屬性,Function對象裏既可以裝屬性也可以裝可執行的代碼。
var fun = new Function() // 用構造函數的方法新建一個函數對象(在new的時候會執行所有函數內的代碼)
function 函數名(arguement1,arguement2){ } // 函數聲明的方式新建一個函數對象
var fun = function() {} // 使用函數表達式來創建一個函數對象
構造函數,類(首字母要大寫)
構造函數就是一個普通的函數,創建時習慣首字母大寫
調用是通過new來調用
使用構造函數創建出的對象叫做一類對象,我們也叫做類。
通過類創建出來的對象叫做實例。
每一種對象都屬於一種類型,每種類型都有不同的作用,類性>對象>實例
1立刻創建一個新的對象。
2this指向新建的對象(理解爲this就是新建的對象)。
3逐行執行函數裏的代碼。
4將對象作爲返回值返回。
prototype
function First(a,b) {
this.a = a
this.b = b
var d = me()
}
// 會造成全局污染
function me() {
alert("aaaaaaaaaaaaaaaaaaa")
}
// 使用prototype屬性添加
First.prototype.my = function(){
alert('ssssssssssssssssssss')
}
let one = new First(1,2)
one.my()
// Object爲最後的原型