总的来讲,JavaScript 对象是拥有属性和方法的数据。
与JAVA中的对象很相似,是类似这样的:
var person = {
firstName:" Chris ",
lastName:"Paul ",
age:34,
eyeColor:"brown"
};
可以说 "JavaScript 对象是变量的容器"。
但是,我们通常认为 "JavaScript 对象是键值对的容器"。
键值对通常写法为 name : value (键与值以冒号分割)。
键值对在 JavaScript 对象通常称为 对象属性。(与JAVA集合框架库中的HashMap相似)
我们可以通过两种方式访问对象属性:
①person.lastName;
②person["lastName"];
对象方法中要注意一个细节:
比如:①name = person.fullName() 和 ②name = person.fullName;
相比差了一个括号(),那么它们显示出来有什么不同呢?
我们来测试一下:
①:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>t9</title>
</head>
<body>
<p id="demo"></p>
<script>
var person = {
firstName: "Chris",
lastName : "Paul",
id : 3,
fullName : function()
{
return this.firstName + " " + this.lastName;
}
};
document.getElementById("demo").innerHTML = person.fullName();
</script>
</body>
</html>
②:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>t9</title> </head> <body> <p id="demo"></p> <script> var person = { firstName: "Chris", lastName : "Paul", id : 3, fullName : function() { return this.firstName + " " + this.lastName; } }; document.getElementById("demo").innerHTML = person.fullName; </script> </body> </html>
运行结果:
①
②
可以看出不加()的话,输出的只是fullName:后写的字符串的打印结果。
加()的话,输出的就是return的内容。
下面再验证一下键值对的写法是否正确:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>t10</title> </head> <body> <p id="demo"></p> <script> var person = { "nickname":"nZk", }; document.getElementById("demo").innerHTML = person.nickname();//注意这里的nickname()也是要加()的 </script> </body> </html>
运行结果:
可见类似"nickname":"nZk",这样键值对的写法也是可以的。