对象的动态特性
1、给对象动态添加属性
当一个对象需要某个属性的时候,可以用两种方式为其添加属性
- 直接使用`对象名.属性名 = 值`这种形式,为对象添加对应的属性。
- 使用关联数组语法`对象名["属性名"] = 值`这种形式,为对象添加对应的属性
//o是一个没有任何自定义属性的对象
var o = {};
//现在想让他拥有name age gender等属性
//直接使用 对象名.属性名 = 值
o.name = "张三";
//使用 对象名["属性名"] = 值
o["age"] = 18;
{name: "张三", age: 18}
注意:
当要动态的为一个对象添加属性的时候,必须使用关联数组的方式。
//接收到了用户的输入
var str = prompt("请输入属性名");
o = {};
//o.str = "这是一个新属性"; //这么写是不对的,会给对象新增一个str属性
//正确的写法如下
o[str]="这是一个新属性";
2、对象属性的访问形式
- 点语法:
对象名.属性名
- 关联数组:
对象名[属性名]
var o = {
name:"张三",
sayHello:function(){
console.log("你好,我叫"+ this.name);
}
};
//点语法
console.log(o.name);
//关联数组语法
console.log(o["name"]);
//这两种用法同样适用于方法
o.sayHello();
o["sayHello"]();
//可以对这个对象的属性进行遍历,如果是值就打印,如果是方法就调用
for(var k in o){
if ( typeof o[ k ] == 'function' ) {
o[ k ]();
} else {
console.log( 'log: ' + o[ k ] );
}
}