一、什么叫JavaScript对象?html
定义:名值对的集合。简单的讲就是容纳属性值和属性值的容器,这些属性能够是无序的,基本上JavaScript中全部的事物均可以当作对象。面试
拓展:咱们常常说,数组也是对象,那么,咱们从对象定义中名值对的角度看,数组与普通的对象相比,他的名值对是由顺序的而已,即每个arry[i]对应着固定的数值,因此,能够说,数组是特殊的对象,特殊就特殊在他的名值对是有序的,如今再看数组是否是简单多了呢?正则表达式
二、建立对象 的四种方法:数组
分别为:函数
①对象字面量法;②new关键字建立法;③构造函数法;④ES5提供的Object.creat()方法;code
①对象字面量法:htm
建立方法:对象
var school={name:'cumt',blog
'first-road':'大学路',ip
Iscollege:true,
students:50000,
};
须要注意的几个点:
一、属性名若是是以数字开头,则属性名必须加上单引号或者双引号;若是属性名中包含JavaScript的保留字或者非法字符(-等字符)必需要加单引号或者双引号。其余状况能够没必要加单引号或者双引号。
二、属性值若是是字符串,则属性值必加单引号或者双引号;若是属性值是数字、布尔值、undefined、NaN或者null则能够不用加引号。
三、属性之间分隔用逗号分开,而不是用分号(切记)。
②经过var关键字和new关键字建立对象:
建立方法:
var person=new Object(){name:'josn',
sex:male,
'girl-friend':lily,
hometown:'江苏',
};
③构造函数法:
var preson=function(){name:'AJax',
valuble:true,
times:'often',
};
说明:
一、前面说到数组是特殊的对象,那么在这儿,聪明的你们确定早就看出来了,函数它也是对象,其实仔细想一想:函数是一种对象,而咱们却能够利用函数来定义一个对象,乍一听,咋感受这么像数学里面的充分必要的关系,但实际上用这种关系解释他们是解释不通的也是不必的,只要理解:函数是一种对象,经过函数能够构造对象,这就够了。关于函数的总结稍后会在下一贴随笔中细说。
二、既然第一条说到了JavaScript的对象,我们就来理一理JavaScript中到底有多少内置对象(面试的时候在这个问题上栽过一回,当时就问蒙了,只零零散散的回答了一部分):JavaScript中的内置对象有17个之多,经常使用的是Array对象、Date对象、Regexp(正则表达式)对象、String对象、Global对象 ,Object对象,Arguments对象,Boolean对象,Error对象,Function对象,Math对象,Number对象等,具体的内置对象使用方法请参照:https://www.cnblogs.com/Arther-J/p/5388633.html
④经过Object.create()方法建立对象:
在ES5中,提供了一种建立对象的新方法:经过Object.create()建立对象,使用方法以下:
var dream=Object.create({owner:'mine',
distance:'step',
method:'天助自助者',
});
三、对象属性的访问、添加、修改、删除、遍历操做方法
通例:
var obj={name:'攻城狮',
age:18,
sex:'male',
hobby:'fishing',
};
①对象属性的访问:
方法为:访问对象的属性时,方法有两种:对象名.属性名 或者 对象名.['属性名'] 不管是用 点 的形式仍是方括号的形式都是能够的,至于这俩有啥区别,待会儿咱在慢慢扯。
例:我要获得obj这个对象中的age属性的属性值,我能够这样写:console.log(obj.age);
固然我也能够这样写:console.log(obj['age']);
获得的结果是同样的,都是 18.
②添加对象的属性:
例:咱们想要给上面的obj对象中添加一个sayhi的属性,咱们能够这样作:
obj.sayhi='hello';
访问:console.log(obj.sayhi); 结果为:hello
③修改对象的属性值:
修改对象属性值其实就是对对象属性值进行新的赋值,若是对象中这个属性原来就存在,咱们称之为修改属性值,那么若是这个属性原来在对象中压根就没有,那么这就是上面刚刚说的添加对象的属性。
例如:咱们如今想把obj的sex属性名的值换成female,咱们能够这么写:
obj.sex='female';
至关于从新给sex属性名赋了一个值
这个时候咱们再访问:console.log(obj.sex);就会发现结果变成了 female
④删除对象的属性:
咱们若是想要删除对象中原来存在的某个属性,JavaScript提供的方法是delete
例如,咱们如今想把上面obj的hobby的属性删掉
在删掉以前呢,咱们先来访问一下obj的属性,看看他的结果,方便和删除后作对比
console.log(obj.hobby); 结果正如你们所预料的,是 fishing
那,咱们来删除hobby属性,方法是:
delete obj.hobby;
这会儿咱再来访问:
console.log(obj.hobby); 就会发现结果变成了 undefined,咱们删除了hobby属性,访问了一个不存在的属性,结果天然是undefined
⑤遍历对象的属性:
遍历 JavaScript 对象中的属性没有其余语言那么简单,由于两个因素会影响属性的遍历:对象属性的属性描述符 (property descriptor) 的 [[Enumerable]]
特性为 true
(可枚举)才能被 for-in
访问;若是在对象自己没有找到属性,接下来会在原型链上查找,访问属性时会沿着整个原型链从下到上查找属性。因此说遍历属性时,要考虑这两个因素。
下面咱们就来试试,使用for..in取出obj对象中的所有自有属性和属性值:
var x;
for(x in obj){
document.write(i+':'+house[i]+';<br/>');
};
结果为:
name:攻城狮;
age:18;
sex:female;
sayhi:hello;
写在末尾:
本篇关于对象的知识总结都是些比较基础的东西,适合于初学者,但愿各位前辈、高手、老师指点分享经验和见解,也欢迎在评论区交流见解。