HIHI,因为最近在重看JavaScript,刚好读到物件的使用方法,想说顺便记录一下,之后再陆续纪录进阶的使用方法和继承。
简单说,JavaScript的所有物件都是类似于「字典」的存在,物件中可以有许多「特性」,所谓的特性就是由一个键值「key」对应一个键值的内容「value」,要注意的是键值一定是文字字串,而键值内容可以是文字、数字或是一个函式方法,当做一个物件内的特性。
在JavaScript中可以直接将物件指定给一个变数。
//以下例子将一个物件指定给rex//这个物件里有两个特性:「name」和「writeName」,他们里面的值分别是字串和一个函式//最后一个特性结束后尾随逗号很有效,他可以在重新安排特性时不用特别留意出现遗漏逗号的问题var rex = { name:'rex', writeName:function(){ return 'Name is ' + this.name; },};
Object.keys()可以回传物件内的所有特性的key值
//object.keys()可以读出该物件所有特性的key值Object.keys(rex); //会回传阵列,["name","writeName"]
创建好物件后我们可以使用点号运算子(.)来存取特性。
//取得物件rex特性console.log(rex.name); //会取得'rex'console.log(rex.writeName); //会取得一个函式内容//如果试着取得一个不存在的特性会回传undefinedconsole.log(rex.age); //会取得undefined//使用物件rex内的writeName函式rex.writeName(); //会印出'Name is rex'//设定新的特性给rex物件//如果物件中的一个特性还没存在,那在设定他的同时会自动被建立rex.age=18; //用等于将18这个值指定给rex.age这个新特性console.log(rex.age); //会取得18//如果该物件中的特性已经存在,那设定他会改变该特性的值rex.age=20;console.log(rex.age); //会取得20
也可以使用中括号来读取特性
//和点号运算是比较不同的地方在于,中括号内的键值是可以是运算后的结果rex['a'+'g'+'e'] //经过加号运算后会变成rex['age'],所以回传20//数字的运算也没有问题rex[1+1]='abc' //经过加法运算后会变成rex[2]='abc',所以会增加一个特性2的值为abc//需要注意的是,之前有说物件内的特性键值都是文字字串,所以其实2会是字串'2'Object.keys(rex); //会回传阵列,["name","writeName","age","2"]//不过在中括号使用上依然不会有差别,因为方括号会将里头的值强制转成字串rex[0+2]; //会回传'abc'//呼叫方法rex[writeName](); //会印出'Name is rex'//就连变数也难不倒中括号var strI=2; //把2这个值指定给strI变数rex[strI]; //中括号读到strI里面的值是2,所以会回传'abc'
删除特性可以用delete运算子处理
delete rex[2]; //会回传trueObject.keys(rex); //回传阵列的阵列中age已经被删除掉了,["name","writeName","age"]rex[2]; //回传undefined
以上是最基本的物件使用方法,之后会慢慢讲到比较艰深的地方,
如果有说明错误或漏掉哪些观念的地方,就请各位再留言和我说明了!!
谢谢大家!!