JavaScript中的对象
作为一名优秀的程序猿,不会还有人没有对象吧。
既然如此,下面我们就来学习一下如何让自己拥有一个对象。
首先来了解一下对象,在JavaScript中,对象(Object)是一个很重要的概念,对象是JS最重要的数据类型。
那么什么是对象呢?
对象不是你的boyfriend或girlfriend。在JavaScript中,对象是一组"键值对"的集合,是一组无序的数据集合。
创建对象的方式
常用的创建对象的方式有两种,字面量方式或是构造函数方式。
- 字面量方式
var obj={
name:'Curry',
age:32,
sayMyName:function(){
console.log(this.name);
}
}
- 构造函数方式
var obj=new Object();
obj.name='Curry';
obj.age=32;
obj.sayMyName=function(){
console.log(this.name);
}
了解到对象是如何创建的之后,我们来谈谈什么是"属性"。
前面说到,对象是一组"键值对"的集合。在JavaScript中,我们把"键值对"的键名称作"属性",而"键值对"的键值可以为任意类型,可以是基本数据类型,也可以是引用类型。
那么何为"方法"呢?
当"键值对"中的键值是函数时,我们就可以把"键值对"的键名称为"方法"。
访问对象属性的方式
既然学会了如何创建对象,也知道了何为属性,那么必然离不开对属性的访问。
访问对象属性的方式有两种,点方式或中括号方式。
- 点方式
var obj={
name:'Curry',
age:32,
sayMyName:function(){
console.log(this.name);
}
}
var a=obj.name;//Curry
- 中括号方式
var obj={
name:'Curry',
age:32,
sayMyName:function(){
console.log(this.name);
}
}
var a=obj["name"];//Curry
访问对象的属性可以是属性的读取亦可以是属性的赋值。
属性的读取就是读取对应"属性"的键值。
属性的赋值,我们需要了解到的是,在构造函数方式创建对象时,是先定义对象,后定义属性的。这是因为JavaScript允许属性的"后绑定",只要是存在的对象,可以在任何时候新增对象的属性。
- 点方式
var obj={
name:'Curry',
age:32,
sayMyName:function(){
console.log(this.name);
}
}
//属性的读取
obj.name; //Curry
//属性的赋值
obj.age=31;//age属性已存在,即修改键值
obj.hobby='basketball';//hobby属性未存在,即新增hobby属性
//obj={
// name:'Curry',
// age:31,
// sayMyName:function(){
// console.log(this.name);
// },
// hobby:'basketball'
}
- 中括号方式
var obj={
name:'Curry',
age:32,
sayMyName:function(){
console.log(this.name);
}
}
//属性的读取
obj["name"]; //Curry
//属性的赋值
obj["age"]=31;//age属性已存在,即修改键值
obj["hobby"]='basketball';//hobby属性未存在,即新增hobby属性
//obj={
// name:'Curry',
// age:31,
// sayMyName:function(){
// console.log(this.name);
// },
// hobby:'basketball'
}
访问对象的属性有两种方式,而方法作为"特殊"的属性,只能通过点方式访问。
var obj={
name:'Curry',
age:32,
sayMyName:function(){
console.log(this.name);
}
}
//错误的方式
obj.sayMyName;
//正确的方式
obj.sayMyName(); //Curry
//中括号方式访问方法
obj["sayMyName()"]; //据我所知是没有什么效果
查看对象属性的方式
查看对象本身所具有的属性,我们可以想到通过console.log()打印对象来查看,除此之外,还有一种方式,就是Object.keys( )方法,参数是对象,返回值为数组。
var obj={
name:'Curry',
age:32,
sayMyName:function(){
console.log(this.name);
}
}
Object.keys(obj);//['name','age','sayMyName']
删除对象属性的方式
想要删除对象的属性,可以使用delete命令,使用delete命令删除属性,删除成功会返回true
var obj={
name:'Curry',
age:32,
sayMyName:function(){
console.log(this.name);
}
}
console.log(Object.keys(obj));//[ 'name', 'age', 'sayMyName' ]
console.log(delete obj.age);//true
console.log(Object.keys(obj));//[ 'name', 'sayMyName' ]
console.log(delete obj.man);//true
从上面的代码你发现了什么吗?
为什么最后一行返回的是true;
这是因为delete方法"只能"返回true,因为delete即使删除一个不存在的属性也不会报错,并且返回的是true。
学习了对象类型,你有什么想法吗?赶快为自己new一个对象吧!!!
如果有错欢迎在下方评论,感谢您的观看。