對象是類的實例,萬事萬物皆對象霜大。
類式對象的類型凑懂,具體到某一個事物
對象是帶有屬性和方法的特殊數(shù)據(jù)類型城豁。
創(chuàng)建對象
1.直接量創(chuàng)建對象
var object = {}
2.使用new關(guān)鍵字創(chuàng)建對象
var object = new Object()
對象屬性查詢
1.點語法: 對象.屬性
2.[]: 對象[屬性]
工廠模式
function fn(){
var obj = new Object();
obj.name = "張三";
obj.age = 20;
obj.sex = "男";
return obj;
}
var p1 = fn();
var p2 = fn();
工廠模式帶參數(shù):
function fn(a,b,c){
var obj = new Object();
obj.name = a;
obj.age = b;
obj.sex = c;
return obj;
}
var p1 = fn("張三",20,"男");
var p2 = fn("李四",30,"女");
構(gòu)造函數(shù)
函數(shù)名首字母大寫 使用this關(guān)鍵字進行屬性賦值
沒有return返回值 調(diào)用時用new關(guān)鍵字
原型
每個函數(shù)都有一個原型屬性,叫做prototype
原型是一個對象湘捎,用它可以實現(xiàn)屬性的繼承
prototype 這個屬性的屬性值是一個對象(屬性的集合),默認的只有一個叫做constructor的屬性指向這個函數(shù)本身葛虐。
每一個實例對象都有一個proto指針驮审,指向構(gòu)造函數(shù)的prototype原型
原型對象的作用就是定義所有對象實例所共享的屬性和方法
hasOwnProperty() 判斷一個屬性是本地屬性(true)還是原型對象屬性(false)
in操作符 檢測對象是否包含某個屬性钱豁,可以是本地屬性也可以是原型屬性
原型鏈
當訪問一個對象的屬性和方法是耻卡,如果當前對象擁有,那么直接調(diào)用牲尺,如果當前對象沒有卵酪,那么向他的父級查找,如果父級有谤碳,那么直接調(diào)用溃卡,否則繼續(xù)向上查找,直到找到object基類為止蜒简,如果最終都沒有找到就返回undefined
確定原型和實例的關(guān)系:可以通過兩種方式來確定原型和實例的關(guān)系
1.操作符 instanceof
2.isPrototypeof()方法