js 对象
对象包括属性和方法
对象也是变量。但是对象包含很多值。
1、对象属性
名称:值
对 被称为属性。
如下例子:
var person = {firstName:"Bill", lastName:"Gates", age:62, eyeColor:"blue"};
2、对象方法
方法以函数定义
被存储在属性中。
如下实例:
var person = {
firstName: "Bill",
lastName : "Gates",
id : 678,
fullName : function() {
return this.firstName + " " + this.lastName;
}
};
3、this关键词
在函数定义中,this 引用该函数的“拥有者”。
在上面的例子中,this 指的是“拥有” fullName 函数的 person 对象。
换言之,this.firstName 的意思是 this 对象的 firstName 属性。
4、访问对象属性
1)方法一:
person.lastName;
2)方法二:
person["lastName"];
5、访问对象方法
正确的写法:
var name = person.fullName();
!!!!!!如果 不使用 () 访问 fullName 方法,则直接返回函数的定义:
如下实例:
var name = person.fullName;
则直接返回 function() { return this.firstName + " " + this.lastName; }
6、一些栗子和注意点
栗子 1:对象中可以存储数字,字符串, 数组
加单引号或双引号的属性,用点操作符 . 和中括号操作符 [] 访问时是不一样的
var ourDog = {
name: "Camper",
"firstbird":"lookme bro",
legs: 4,
tails: 1,
friends: ["everything!"]
};
console.log(ourDog.firstbird); //lookme bro
console.log(ourDog["firstbird"]); //lookme bro
加单引号或双引号的属性,用点操作符 . 和中括号操作符 [] 访问时是不一样的
栗子 2:属性名称中如果有空格,必须把属性名称用单引号或双引号包裹起来,并且只能使用中括号操作符 ([ ])访问 。
var myObj = {
"Space Name": "Kirk",
"More Space": "Spock",
"NoSpace": "USS Enterprise"
}; //属性名称 有空格的,只能使用中括号操作符[ ] 访问
myObj["Space Name"]; // Kirk
myObj['More Space']; // Spock
myObj["NoSpace"]; // USS Enterprise
栗子 3:中括号操作符 [ ] 的另一个使用方式是用变量来访问一个属性。当你需要遍历对象的属性列表或查表时,这种方式极为有用。
当我们通过变量名访问属性的时候,不需要给变量名包裹引号。因为实际上我们使用的是变量的值,而不是变量的名称。
1、
var dogs = {
Fido: "Mutt", Hunter: "Doberman", Snoopie: "Beagle"
};
var myDog = "Hunter";
var myBreed = dogs[myDog]; //就是这里,通过变量 myDog 来访问dogs 对象的属性 Hunter
console.log(myBreed); // "Doberman"
2、
var someObj = {
propName: "John"
};
function propPrefix(str) {
var s = "prop";
return s + str;
}
var someProp = propPrefix("Name"); // someProp 现在的值为 'propName'
console.log(someObj[someProp]); // 输出 "John"
栗子 4:给对象添加新属性
(像更改属性一样添加新的属性)
var ourDog = {
name: "Camper",
legs: 4,
tails: 1,
friends: ["everything!"]
};
方法一:
ourDog.bark = "look-me";
方法二:
ourDog["bark"] = "look-me";
栗子 5:删除对象的属性
var ourDog = {
name: "Camper",
legs: 4,
tails: 1,
friends: ["everything!"],
bark: "bow-wow"
};
delete ourDog.bark;
或者
delete ourDog["bark"];
栗子6:hasOwnProperty()检测对象属性是否存在
(检查对象是否有该属性。如果有返回true,反之返回false)
var myObj = {
top: "hat",
bottom: "pants"
};
myObj.hasOwnProperty("top"); // true
myObj.hasOwnProperty("middle"); // false
**7、JSON对象 **
(属性和值都要放在双引号中)
var myMusic = [
这个对象就是一个json对象
{
"artist": "Daft Punk",
"title": "Homework",
"release_year": 1997,
"formats": [
"CD",
"Cassette",
"LP"
],
"gold": true
}
];
数组中有多个 JSON 对象的时候,对象与对象之间要用逗号隔开。