概念:一組無序屬性的集合;屬性的值可以是普通數(shù)據(jù)類型;
鍵值對:如(color:red)有key有對應的value值
var car={
name:'xiaoming',
age:5,
run:function(){
console.log('nihao');
}
}
console.log(typeof car);//object
訪問對象的屬性值:car.name
訪問對象屬性使用點+屬性名
修改對象的屬性:對象+點+對象名=新的屬性值
car.name="1111"
- 添加對象屬性:對象+點+新對象名=屬性值
car.num="123";
- 刪除對象屬性
delete car.num;
注: 一個空的dom對象會有很多個對象屬性,只是屬性值都是null
- 使用[屬性名]來訪問對象屬性,必須加雙引號
var pc = {//字面量創(chuàng)建
name: "dell",
size: "15",
color: "black",
start: function(){
console.log('welcome to myWorld');
}
}
console.log(pc['name']);
pc["name"]="apple";
pc["price"]=7280;
console.log(pc["price"]);
delete pc["color"];
console.log(pc);
為什么有兩種操作方式:點更簡潔然低,點的右邊必須是一個具體的屬性名,[]使用范圍多逼争,更靈活
[]的使用場景幕袱,用于不確定屬性的訪問
創(chuàng)建屬性訪問器
function getPro(proName){//形參
console.log(pc.proName);//這樣不行仪际,不是具體的屬性名undefined
console.log(pc[proName])
}
- 使用for-in操作對象
for(let prop in "abcd"){
console.log(prop);
console.log(pc[prop])
// 可以使用charAt()字符串操作函數(shù)
}
第二種創(chuàng)建對象方式 new + 構造函數(shù)
var newObj = new Object();//可以省略();
newObj.name = "tom";
newObj.age = 20;
delete newObj.name;
工廠模式創(chuàng)建對象
function factory(name,age,gender,stuNum){
var obj = {};
obj.name = name;
obj.age = age;
obj.gender = gender;
obj.stuNum = stuNum;
obj.say = function(){
console.log("我叫:"+this.name+"我今年"+this.age)
}
//var obj = new Object();
return obj;
}
使用工廠函數(shù)創(chuàng)建對象
var stu = factory("name",28,"男","h51614");
構造函數(shù)
是一種特殊的函數(shù)祝谚,用于創(chuàng)建同類對象
js是弱語言酣衷,ES6已經(jīng)正式引入了類
自帶的有Date() String() Array();
構造函數(shù)的創(chuàng)建
function Person(name,age){
this.name = name;
this.age = age;
this.say = function(){
console.log("我叫"+this.name);
}
}
構造函數(shù)和普通函數(shù)的區(qū)別:不適用return關鍵字,構造函數(shù)執(zhí)行時穿仪,使用new關鍵字執(zhí)行構造函數(shù)
var p1 = new Person("tom",20);
p1.say()
構造函數(shù)的特性:與普通函數(shù)的區(qū)別
- 構造函數(shù)名首字母大寫
- 構造函數(shù)內部使用this關鍵字處理屬性賦值邏輯
- 構造函數(shù)不使用return關鍵字返回新對象
- 使用new關鍵字執(zhí)行函數(shù)。
構造函數(shù)與實例:實例是new+構造函數(shù)創(chuàng)建的對象啊片,新對象叫做構造函數(shù)的實例只锻,實例與構造函數(shù)之間是多對一的關系
原型
每一個函數(shù)都有一個私有的原型屬性prototype,初試狀態(tài),這個值是一個object類型的對象
原型最重要的作用是為所有實例提供公共的空間紫谷,原型內的屬性可以提供給構造函數(shù)所有的實例復用
每一個實例都有一個‘__proto__’屬性指向構造函數(shù)的原型
什么是原型?每一個函數(shù)都有一個私有的原型屬性prototype,
他們對應的實例都有一個公共的__proto__指向構造函數(shù)的原型
是函數(shù)就有__proto__,