对象的动态特性

1、给对象动态添加属性

当一个对象需要某个属性的时候,可以用两种方式为其添加属性

  • 直接使用对象名.属性名 = 值这种形式,为对象添加对应的属性。
  • 使用关联数组语法对象名["属性名"] = 值这种形式,为对象添加对应的属性
//o是一个没有任何自定义属性的对象
var o = {};

//现在想让他拥有name age gender等属性
//直接使用 对象名.属性名 = 值
o.name = "张三";



//使用 对象名["属性名"] = 值
o["age"] = 18;



//可以通过打印查看效果
console.log(o.name);
console.log(o.age);

注意:

当要动态的为一个对象添加属性的时候,必须使用关联数组的方式。

//接收到了用户的输入
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 ] );
    }
}