谈一谈对象
来源:互联网 发布:淘宝模版如何制作 编辑:程序博客网 时间:2024/06/06 20:17
别想太多,是JavaScript对象
不同于JAVA这类面向对象(Object-Oriented,OO)的语言,JavaScript没有类的概念。因此它的对象也与基于类的语言中的对象有所不同。
ECMA-262中把对象定义为:无序属性的集合,属性可以包含基本值、对象或者函数
简单点来说,JS中的对象就是指由若干键值对组成的无序数据类型的集合。一般用{...}
来表示一个对象,用xxx : xxx
的格式来申明变量以及赋值,并以,
分隔开,最后一个键值对末尾不加,
如下面的例子:
var animal = { type: "animal", age: null, roar_sound: null, roar: function(){ console.log(this.roar_sound); }};animal.type; //"animal"animal['type'];//"animal"animal.age; //nullanimal['age']; //nullanimal.roar(); //null
这个例子创建了一个animal对象,我们可以用 animal.xxx
或者 animal['xxx']/animal["xxx"]
的方式来访问该对象的某一值。
PS:若属性名需要包含特殊字符串时,则需要用" "/' '
括起来,并且只能通过xxx[‘xxx’]的方式来访问该对象,如:
var person = {'first-name' : 'Tom','second-name' : 'Riddle'}//仅能用以下方式访问对象person['first-name']; //"Tom"person['second-name'];//"Riddle"
给JS对象增加或删除属性:由于JS的对象是动态类型,所以我们可以自由的给对象增加或删除属性。
var person = {};person.name; //不存在,undefinedperson.name = "Tony";person.name; //"Tony"delete person.name; //不存在,undefined
判断一个属性是否存在于对象中:
我们可以使用in
来判断一个属性是否存在于对象中,例如:
var person = {name : 'Tom Riddle'age : 'infinity'}'name' in person; //true'type' in person; //false
但是,通过这个方法来判别有个缺点,就是你无法知道这个属性是对象本身有的还是通过继承得到的。比如Person中有name属性,tony继承于person,于是tony也有了name属性,但这并不是他本身所自有的。
为了判断属性是否为对象所自有的,我们可以使用对象名.hasOwnProperty('属性名')
的方法来判断:
var xiaoming = { name: '小明'};xiaoming.hasOwnProperty('name'); // truexiaoming.hasOwnProperty('toString'); // false
注:总结于廖雪峰老师的教程,高程上的Object.defineProperty( ); 暂时没看出用途,等写到了再回来填坑。
阅读全文
0 0
- 谈一谈对象
- 谈一谈
- 谈一谈java中对象的排序
- 结合具体例子谈一谈jsp的九大内置对象
- 谈一谈mac
- 谈一谈ORCFile
- 谈一谈Xamarin
- 谈一谈GRUB
- 谈一谈float
- 谈一谈URL
- 谈一谈mmap
- 谈一谈RingtonePickerActivity
- 从JS对象开始_谈一谈究竟什么是“不可变数据”和函数式编程
- 谈一谈stl的iterator
- 谈一谈系统架构
- 我来谈一谈线程
- 谈一谈软件开发
- 谈一谈前端开发工程师
- 在选择屏幕的标准应用工具条上增加自定义按钮
- 笔记-SVD&PCA
- linux 安装Java
- 最小差值
- 【干货索引】阿里云大数据计算服务MaxCompute与生态系统的融合
- 谈一谈对象
- react-native 新闻标签排序编辑功能
- Error: "title_activity_hi" is translated here but not found in default locale [ExtraTranslation]
- vue的笔记
- LCS 求最长公共子序列 dp
- Android中AIDL的工作原理
- vim 使用
- 实际使用 工厂模式+适配器模式
- linux 中 xargs、cut 以及管道综合应用