一堆变量+一堆函数的集合
var obj1 = {
x: 60,
y:70,
z:function() {
console.log('z func')}
}
1.x: 60是一个属性,x为属性名,60为属性值;
属性与属性之间以逗号隔开
2.属性名均为string,会被系统隐式地转为string类型
3.如果属性名是纯数字、纯字母、以字母开头的字母+数字,可以不写引号
4.如果属性名包含特殊字符(如空格,连接符’-’),就要加上引号(下划线可以不加引号,不会报错)
var person1 = {
name:'xiaoming',
age:18,
sex:'male',
slogan: function() {
console.log('My name is xiaoming.')
}
}
当要创建与person1小明类似的对象时,用直接量的方式创建有些冗余,可以改为用类的方式创建,将person都具备的结构抽象出来,用new的方式创建出对象,更方便简洁
//构造方法
function personClass(pAge,pSex,pName) {
this.name=pName || 'xiaoming';
this.age=pAge;
this.sex=pSex;
this.slogan= function() {
console.log('My name is ' + this.pName)
}
}
var person1 = new personClass(18,'male');
var person2 = new personClass('xiaohong',18,'female');
person1和person2是独立的两个对象
当要设置默认值时,还是要遵循有默认值的属性放最后的原则
(回忆起当年学c++和Java的感觉,心里有点。。。)
获取对象的属性——用点’.’ 或者方括号[]
//方法一
var name = person1.name;
//方法二
var name = person1['name'];
当属性名可以不用引号时才能用点的方式获取
使用方括号时,如果不是纯数字,记得加引号
//方法一
person1.name = 'xiaoming1';
//方法二
person1['name'] = 'xiaoming2';
修改属性时,如果对象里没有这条属性,会自动加上
//方法一
person1.height = 180;
//方法二
person1['height'] = 180;
var person1 = {
name:'xiaoming',
age:18,
sex:'male',
slogan: function() {
console.log('My name is xiaoming.')
},
first_name:'xiao',
son:{
name:'xiao xiao ming',
}
}
var xiaoxiaoming = person1.son;
delete person1.son;
此时person1已经没有son属性,但xiaoxiaoming还存在
删属性只是切断了对象和属性之间的联系,没有将属性销毁回收
for (var pN in person1) {
console.log('person1的属性名:'+pN+",值:"+person1[pN]);
}
var person1 = {
name:'xiaoming',
age:18,
sex:'male',
slogan: function() {
console.log('My name is xiaoming.')
},
first_name:'xiao',
son:{
name:'xiao xiao ming',
}
}
var person2 = person1;
person2.name = 'xiaoming2'
console.log(person2)
console.log(person1)
person1和person2中的name都是’xiaoming2’
原因:
1.变量仅能存储很小的东西,如数字,字符串,布尔值;
2.对象比较复杂,变量存储的是对象的地址,即引用;
3.变量不存储对象的内容,因此我们对对象的操作是通过方括号或点实现的;
4.person2得到的也是对象的地址,因此,person2对属性做的修改直接修改了该对象(浅拷贝)
5.如果想要快速定义出独立的对象,又不冗余地重新再写一遍,可以用类来定义对象结构
多人协作时,个人维护自己的内容,命名不冲突
例如:
//我是ccy,创建name和age变量
var ccy = {
}
ccy.name = 'ccy';
ccy.age = 18;
1.Object()创建空对象
obj1 = {
};
//相当于使用系统创建:
obj2 = new Object();
2.数组合并、小数取指定位数、字符串按固定值拆分、数字转字符串、时间相关Date对象(计算代码性能,耗时,getTime())、
//耗时计算
var time1 = new Date();
var t = 0;
for (var i = 0; i < 1000000; i++){
t++;
}
var time2 = new Date();
t1 = time1.getTime();
t2 = time2.getTime();
n = t2-t1;
//结果:n=4;
3.Math(不是类,相当于命名空间,用点调用)
Math.random():0-1之间随机数
Math.floor()向下取整
// 获得0-9随机数
for (var i=0; i < 10;i++){
console.log(Math.floor(Math.random()*10));
}
具体看官网:链接