JS对象的理解和应用

对象的分类

  • 内建对象 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对象

  • 创建一个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次方
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值