JavaScript中的对象
来源:互联网 发布:课程表数据库设计 编辑:程序博客网 时间:2024/06/07 20:55
在JavaScript中,对象可以看做是由若干个属性组成的无序集合。
JavaScript对象是动态的,可以动态地新增或删除属性。
我们通过对象的引用来操作对象。
obj ={a:'a',b:'b',c:12};var obj2 = obj;//两个引用同时指向一个对象obj2.a = 'a2';console.log(obj.a);
上面的代码输出的是a2,也就意味着,两个引用同时指向一个对象后,一个引用修改了对象的值,则使用另一个引用会受到影响,因为他们指向的是同一个对象实例。
对象的创建
我们通常通过对象直接量的方式来创建对象,例如
obj ={ a:'a', b:'b', c:12, func1 : function(){} };
obj就是一个对象,包含a,b,c这三个属性和func1这个方法。
另外可以通过new关键字来创建对象,例如
var d = new Date(); var a = new Array();var r = new RegExp('[0-9]')
查询和设置对象的属性
我们可以通过.或[]的方式来获取或设置对象的属性值
//两种方式读取属性值var a = obj.a ;var a = obj['a'];//两种方式设置属性值obj.a = 'abc';obj['a'] = 'abc';
用.的方式比较常见,但[]的方式功能更强大,因为[]之间可以是任意的字符串(含’-‘等不能作为标识符的字符),甚至可以是一个表达式
obj['book-title'] = 'JavaScript权威指南';var str = '-title';obj['book'+str] = 'JavaScript权威指南';
总之,[]的方式支持的场景更多!
删除属性和检测属性
JavaScript通过delete来删除一个对象的属性,通过in来检测某对象是否包含一个属性
obj ={a:'a',b:'b',c:12};'a' in obj //检测属性,此处返回truedelete obj.a //删除属性a'a' in obj //再次检测属性,此处返回false
枚举属性(遍历属性)
我们可以通过for…in的语法来遍历一个对象的所有属性
obj ={a:'a',b:'b',c:12};for(attr in obj){ //attr是属性名,obj[attr]是属性值 console.log(attr+'='+obj[attr] );}
下面我们来写一个简单的extend函数,该函数用来扩展一个对象的属性
function extend(o , p){ for(attr in p){ o[attr] = p[attr]; } return o;}
obj2 = {m : 'm' , n : 'n'}; //再定义一个对象,包含m,n属性obj = extend(obj,obj2) //调用extend方法,扩展obj对象,使其拥有m,n属性console.log(obj.m); //获取obj对象的m属性值
getter方法和setter方法
没错,JavaScript也可以定义getter方法和setter方法,通过对象直接量来定义的方式如下:
var obj = { a : 'a' , get b(){ console.log('b is called'); return 'b'; }, set b(newValue){ console.log('b is setted'); this.a = newValue; }};
接下来,我们可以像对待数据属性一样来对待b,区别就是,获取或设置值时,对应的getter或setter方法会被调用(不需要关心setter方法的返回值)
var b = obj.b //getter方法会被调用obj.b = 'b' //setter方法会被调用
对象序列化
对象序列化是指,将对象的状态转换为字符串,对象反序列化是指,将字符串转换为对象。我们使用JSON.stringify()方法来序列化对象,使用JSON.parse()方法来反序列化对象。
obj ={a : 'a' , b : 'b' , c : 12 };var str =JSON.stringify(obj); //序列化对象,返回{"a":"a","b":"b","c":12}var o = JSON.parse(str) //反序列化对象,返回一个对象
0 0
- 【javascript】javascript对象中的this
- 【javascript】javascript中的JSON对象
- Javascript中的arguments 对象
- javascript中的自定义对象
- javascript中的Function对象
- JavaScript中的window对象
- Javascript中的对象
- javascript中的对象模型
- JavaScript中的arguments对象
- JavaScript中的Math对象
- javascript中的json对象
- JavaScript 中的对象
- JavaScript 中的面向对象
- Javascript中的String对象
- javascript中的style对象
- javascript中的Math对象
- Javascript中的对象
- 理解JavaScript中的对象
- 数据结构之排序算法的稳定性
- 2012蓝桥杯决赛第一题
- iOS - NSCalendar获得日期元素与时间的比较
- poj1845 数论好题
- redis实现mybatis二级缓存
- JavaScript中的对象
- Centos 6.5中Nginx的安装.
- *p++与(*p)++与*(p++)
- la 3078
- Android开发学习ing[资料和代码库]
- C语言快排函数qsort()
- Ubuntu下 安装Android Studio
- C++ 网络编程客户端
- 解析数组名