JavaScript高级 面向对象,11--对象的动态特性-关联数组用法

说明(2017.4.2):

1. 对象的动态特性:

(1)在js中,一个对象需要属性,就可以利用“对象名.属性 = 值”的方式为其添加,只要赋值成功,对象就新增这个属性。

(2)对象属性的访问形式:

  *点语法:o.name

  *关联数组:o[name],注意,name必须是一个字符串,否则会把name默认为一个变量名使用。

(3)曾经使用:

1     function mix(o1,o2){
2         for(var k in o2){
3             o1[k] = o2[k];
4         }
5     }

(4)凡是需要给对象动态添加成员的时候,必须使用关联数组的语法。

  (因为不知道属性名也不知道属性值,如果用o.xxx的方式,会把xxx当成属性名,但其实xxx是一个变量,并没有xxx这么一个属性,例如上面的k)

 1 <!DOCTYPE html>
 2 <html >
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Document</title>
 6 </head>
 7 <body>
 8     
 9 </body>
10 <script type="text/javascript">
11     var o = {
12         name: "张三",
13         sayHello: function(){
14             console.log("你好,我叫" + this.name);
15         } 
16     };
17     // 使用关联数组,读取name的值,调用sayHello方法
18     console.log(o["name"]);
19     o["sayHello"]();
20     // obj[...]()[...]()
21     // obj.xxx().xxxx()链式编程
22     for(var k in o){
23         if(typeof o[k] == "function"){
24             o[k]();
25         }else{
26             console.log("log: " + o[k]);
27         }
28     }
29 </script>
30 </html>