对象及其属性的创建
对象的属性名规范
对象的属性名不强制遵守标识符的规范 可以用关键字
不过尽量遵守标识符规范
如果要用特殊的属性名 则不能用".“的命名方式 需要另外一种 语法:对象[“属性名”]=属性值
建议使用”[]“因为”[]“更灵活,”[]“中可以传入一个变量,”[]"中可以传变量,这样变量的值为多少就会读取那个属性名的属性
<script type="text/javascript">
var obj=new Object();
obj["123"]=789;
console.log(obj["123"]);
var a="123";
console.log(obj[a]);
//返回值还是obj["123"]的值
</script>
new
使用new关键字调用的函数,是构造函数constructor
构造函数是专门用来创建对象的函数
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript">
var obj=new Object();
//调用Object()函数创建对象
/*在对象中保存的值称为属性
* 向对象中添加属性
* 语法:对象.属性名=属性值;
*/
obj.name="倪蝶蝶";
console.log(typeof obj);
//浏览器的控制台会显示其中的属性 编译器的控制台显示Object
obj.age=999;
/*obj对象中含有了两个不同且无联系基本类型
因为obj对象同时包含他们 使他们有了联系*/
console.log(obj.hello);
//如果读取对象中没有的属性则会返回undefined,不会报错
//删除对象的属性 语法:delete 对象.属性名
delete obj.name;
//删除onj.name(孙悟空)
</script>
</head>
<body>
</body>
</html>
利用字面量创建对象
var obj={}; 可这个语法直接创建obj对象
obj.name="阿虎"; 可这样直接为对象添加属性
也可在创建时直接向里面添加属性 属性名可以加也可以不加引号 一般不要加 但是要使用一些特殊的名字时要使用引号,比如##@¥%这样奇葩的属性名;
语法:var obj1={name:“阿狗”,属性名:“属性值”,属性名:“属性值”…};
这样写更清晰:
var obj1={
name:“阿狗”,
属性名:“属性值”,
属性名:“属性值”
… … … … …
};
属性之间由逗号隔开,但最后一个属性后面不要加逗号
JS对象的属性值
JS对象的属性值可以是任意的数据类型,甚至可以是一个对象,也可以是函数。
<script type="text/javascript">
var obj=new Object();
var obj1=new Object();
obj1["4"]=555;
obj["999"]=obj1;
console.log(obj["999"]);
console.log(obj["999"]["4"]);
</script>
创建函数属性
利用对象.函数名=function(){}
创建
obj["fun"]=function(){
alert("123");
}
创建obj对象的fun函数
检查对象中是否含有指定的属性
in 运算符 通过该运算符可检查一个对象中是否含有指定的属性 如果有则返回true 没有则返回false
语法 “属性名” in 对象
<script type="text/javascript">
var obj=new Object();
obj["123"]=789;
console.log("text" in obj);
//返回false
console.log("123" in obj);
//返回true
</script>
向对象中添加属性
对象的属性也可以是函数,当成为对象的属性后,我们称它为对象的方法(method)
枚举对象中的属性
用for in
语句
语法:
for(var 变量 in 对象){}
in前面是定义一个变量,也可以在外面定义变量,然后在in前面只写变量也行
对象中的属性有几个,其{}
中的语句就会执行几次
每次执行时,会将对象中的属性的名字赋值给变量
这里,因为如果用对象.属性名
的话,我们不能用变量来替代属性名,所以我们可以[]
中括号把变量括起来替代对象.属性名
即对象[变量]