对象的分类
内建对象 ES标准中定义的对象 ,eg:Math、String… 宿主对象 由运行环境(浏览器决定)eg:BOM、DOM 自定义对象
创建对象以及对象的读取和赋值
//创建
var obj = new Object();
//赋值
obj.name="hahah";
obj.age=18;
//obj可以由多个属性,数量不限制
//读取
var name = obj.name;
var age=obj.age;
var gender=obj.gender;//这里为给obj对象的gender属性赋值,显示undefined
//赋值和创建也可一步完成
var obj = {
name : "哈哈哈",//中间用逗号隔开
age : 18
}
//删除对象的属性
delete obj.name;//delete是关键字
属性名的定义规范:①不强制遵守命名规则,但尽量遵守规范 ②若使用特殊属性名,如“123”不能用点“.”来操作,要用中括号“[]”来进行操作,且使用中括号时要用引号引住属性名
obj["123"]=789;
使用中括号来操作对象更加灵活,因为属性名可以是不固定的,例如
var name="mingzi";
obj[name]="hahah";
使用工厂方法创建对象
使用工厂对象创建对象,使用的构造函数都是Object(),所有创建的对象都是Object,例如,
function createObject(name,age,gender){
var obj = new Object();
obj.name=name;
obj.age=age;
obj.gender=gender;
obj.showName = function(){ alert(this.name) }
return obj;
}
var obj = createObject("haha",18,"男");
)
使用构造函数创建对象
function Person(name,age){
this.name=name;
this.age=age;
this.sayHello=function(){ alert(this.name); };
}
var person = new Person("hah",18);
原型Prototype
当函数以构造函数调用时,它所创建的对象会有一个隐含的属性,指向该函数的原型对象,我们可通过__proto__来访问 原型对象就相当于一个公共的区域,所有同一个类的实例都可以访问到这个原型 可以将对象中的共有内容(属性、方法)统一设置到原型中,避免多次加载 访问对象的一个属性时,他会先从对象自身寻找,如果有就直接使用,如果没有就到原型中取寻找,如果找到的话就直接使用 原型对象也是对象,他也有原型(Object对象的原型没有原型)
数组对象
var arr = new Array();
var arr = [];
length属性,数组中最大索引数加一 常用方法
push() 向数组最后添加一个或多个元素并返回长度 pop()删除最后一个元素并返回 unshift()想数组最后添加一个或多个元素并返回长度 foreach(value,index,arr),三个参数分别为元素的值、元素的索引和数组对象(IE8以下不支持) slice()选定指定元素
var arr = new Array();
arr={0,1,2,3,4};
arr.slice(1,2);//1
arr.slice(1,4);//123
arr.slice(1);//1234
arr.slice(0,-1);//0123
splice(startIndex,count)删除指定元素 splice(index,0,value)可在指定索引前插入value concat(arr1,arrr2,…,arrN)连接两个或多个数组 join()将数组转化为字符串
var result = arr.join("-");
//将数组中个元素用“-”连接起来,连接符可以是其他符号
reverse()颠倒数组元素位置 sort()对数组元素进行排序
函数对象
call()和apply()与函数名()都可以调用函数 调用call()和apply()可将第一个参数指定为一个对象,修改函数的this
call()将实参的对象之后传递 fun.call(obj,实参1,实参2…) apply()需要将实参封装到一个数组中统一传递 this的情况
①以函数的形式调用时,this永远都是window ②以方法形式调用时,this是调用方法的对象 ③以构造函数调用时,this是新创建的那个对象 ④使用call好apply调用时,this是实参是传递的那个对象 调用函数时浏览器每次都会传递两个隐含参数①函数的上下文对象this②封装实参对象arguments
arguments存储了传递的所有的实参,它是一个类数组对象,它也可以通过索引来操作数据,也可获取参数的数量(arguments.length),在调用函数时我们所传递的实参都会在arguments中保存 arguments有一个callee属性,指向函数的对象
Date对象
var date = new Date();
若直接使用构造函数创建一个Date对象,则会返回当前对象代码执行的时间 创建指定时间
var date = new Date("月/日/年 时:分:秒");
常用方法
getDate()获取日期对象的天 getDay()获取日期对象在一周中的某一天 getMonth()获取月份(0-11,0是一月) getFullYear()获取年份 getHours()获取小时 getTime()获取当前时间的时间戳
Math对象
常用方法
abs()绝对值 ceil()对数组进行上舍入 1.3=>2 floor()向下取整 round()四舍五入取整 random()获取(0,1)之间的随机数
生成一个x到y的随机数 Math.round(Math.random()*(y-x)+x);
max()获取多个值中的最大值 pow(x,y)返回x的y次方