json對象
數(shù)據(jù)格式辟汰、數(shù)據(jù)存儲(chǔ)【無需內(nèi)置方法】
{
"xxx":"yyy",
"yyy":"bbb"
}
{"userName":"admin","userName":"admin","userName":"admin"}
面向?qū)ο?/p>
編程思路(面向?qū)ο蟮木幊蹋?/p>
構(gòu)造函數(shù)來實(shí)現(xiàn)面向?qū)ο缶幊?/p>
// 構(gòu)造函數(shù):大駝峰
? function Hello(){
? ? //console.log(1111)
? }
? ? // new 關(guān)聯(lián)字(實(shí)例化對象)
? ? var obj= new Hello()
? ? ? obj.name="xxxx"
? ? ? obj.doing = function(){
? ? ? ? ? console.log(2222)
? ? ? ? ? console.log(this.name)
? ? ? }
? ? console.log(obj)
? ? console.log(obj.name)
? ? obj.doing()
{
? ? userName:"admin",
? ? doing:function(){
}
}
{? } == new Object()
對象的定義
【對象的本質(zhì)是利用程序去描述一段客觀存在的事物梗醇;】
//json? 對象:數(shù)據(jù)存儲(chǔ)(替代關(guān)聯(lián)數(shù)組)
//通過字面量的方式定義對象
//對象:屬性、方法
//屬性:描述對象外在特征(類:內(nèi)部的變量)离熏,當(dāng)前對象(方法)需要的數(shù)據(jù)
//方法:突出對象的功能,用于描述對象的行為(類:內(nèi)部的自定義函數(shù))
var obj = {
"userName":"admin",//userName為鍵,且為字符串
"sex":"男",//屬性
......//可寫n個(gè)
doing:function(){
console.log()
},
other:()=>{
console.log()
}
//一個(gè)對象里面可以存在n個(gè)屬性和方法
}console.log(obj)
對象的取值"."來進(jìn)行調(diào)用【調(diào)用屬性】
console.log(obj.userName)//調(diào)用上面userName屬性
調(diào)用方法
obj.doing()
定義對象
var obj = {};//字面量方式
var obj2 = new Object();//實(shí)例化構(gòu)造函數(shù)
console.log(obj)
console.log(obj2)
console.log(obj==obj2)//false
動(dòng)態(tài)存值
obj.userName = "admin"
obj.doing = function(){
console.log("111")
}
console.log(obj)
console.log(obj.userName)
obj.doing()
構(gòu)造函數(shù)
String:構(gòu)建str的操作對象
Array:構(gòu)建數(shù)組對象
Object:構(gòu)建object對象
this關(guān)鍵字
1、this無法直接確定指向舷嗡,程序驅(qū)動(dòng)的過程中確定(默認(rèn)誰調(diào)用this指向誰)
2、箭頭函數(shù)內(nèi)部無this指向嵌莉,默認(rèn)會(huì)指向當(dāng)前函數(shù)的上層
對象方法:內(nèi)部(this指向當(dāng)前對象)
函數(shù)調(diào)用:內(nèi)部(this指向window)
//對象 關(guān)鍵字 this(特指當(dāng)前對象)
//this無法直接確定指向咬崔,默認(rèn)誰調(diào)用指向誰
//面向?qū)ο缶幊?會(huì)用到this
var obj = {
data:{
msg:"test..."
},
//doing:function(){}【es5的格式】
//es6簡寫
doing(){
console.log("111")
//this特指當(dāng)前對象obj
console.log(this)
console.log(this.data.msg)//打印對象obj內(nèi)的data對象的msg屬性
},
something:()=>{
? ? ? ? //箭頭函數(shù)內(nèi)部沒有this指向,指向上層this
? ? ? ? console.log("33333")
? ? ? ? console.log(this)
}
}
obj.doing()//方法的調(diào)用? //obj->doing == this->obj
obj.something() //obj驅(qū)動(dòng) -something(箭頭沒有指向)
補(bǔ)充:json對象 數(shù)據(jù)存儲(chǔ)的場景【es6】
var name = "asdsg"
var obj = {
"userName ":"admin",
name,
}
//數(shù)據(jù)存儲(chǔ)場景
var data ={
sid:"1234567",
name:"張颯",
sex:"男",
like:"女",
tel:"123345436324",
address:"湖北武漢",
subjects:"軟件工程"
}
console.log(data.name);
//對象元素讀取:(不帶引號就是變量)
console.log(data["name"])
//數(shù)據(jù)遍歷
for(k in data){
console.log(k)
console.log(data.k)//不可行
console.log(data[k])
}
es5面向?qū)ο缶幊?/p>
構(gòu)造函數(shù)模式:
function hello(){
}
var obj = new hello()
例
//構(gòu)造函數(shù):大駝峰
function Hello(){
console.log(111)
}
//new關(guān)鍵字(實(shí)例化對象)
var obj = new Hello()
obj.name="xxxx"
obj.doing = function(){
? ? console.log(222)
? ? console.log(this.name)
}
console.log(obj)
console.log(obj.name)
object內(nèi)置API
hasOwnProperty("屬性名") //判斷當(dāng)前對象是否存在某個(gè)屬性