对象的动态特性
在js中可以动态的对对象属性进行增加、修改和删除
访问对象的方法
01 可以使用点语法访问
02 可以使用[]语法访问,注意对象的属性必须是字符串,如若不是字符串,会将key值当做变量去作用域内查找,存在会赋值给key,不存在会报错。
代码示例
//01 创建对象
var obj = {
name:"刘德华",
age:60
};
//02 动态的为对象添加属性
obj.height = "180cm";
console.log(obj.height);
//03 动态的为对象添加方法
obj.maiMeng = function () {
console.log("华仔会卖萌噢");
};
obj.maiMeng();
//04 修改属性的值:如果设置的属性以前不存在,那么就是添加,如果设置的属性已经存在了,那么就是修改
obj.name = "王宝强";
console.log(obj.name);
//05 删除属性
delete obj.name;
console.log(obj.name); //undefined
console.log(delete obj.name); //返回值为布尔值,true为删除成功
关键字in与delete
in关键字
- 判断属性是否存在于对象中,注意所有的key值都为字符串
- for in 循环中,遍历对象
代码示例
var obj = {
name:"张三",
age:18
};
for(k in obj)
{
console.log(k,obj[k]);
}
//检测obj对象中是否存在name这个属性
console.log("name" in obj);
注意:in关键字用于操作数组的时候检测的是索引值并非数组元素
delete关键字
-
删除对象中的属性 delete 对象.属性
-
删除没有使用var声明的变量
(1.通常情况下,声明变量需要使用var关键字,默认所有的全局变量都是window的属性;2.特殊情况下,不使用var声明的变量默认为全局变量)
-
返回值为boolean类型,true表示删除成功
注意点:
- 思考:使用var声明的全局变量可以被删除吗? 不可以
- 直接添加在window上面的属性可以被删除吗? 可以
*删除对象中不存在的属性,返回值为rue
网友评论