JavaScript对象的详细总结

笔记放在Github上,点击访问下载


对象----一组数据(属性)和功能(方法)的集合。


  • 创建对象
    1.使用构造函数创建对象 new Object()
    var obj = new Object();
    2.使用对象字面量声明对象
    var obj = {};

  • 访问对象属性
  1. 使用.访问对象中的属性或方法
    obj.name/obj.sayName()

若对象中没有要访问的属性,结果不会报错,会返回undefined
没有的属性obj.name -> undefined
调用没有的方法obj.sayName() -> 报错

点表示法适用于直接访问对象的属性和方法,[]适用于函数传参时通过变量来访问对象属性值

var myObj = {
gift: "pony",
pet: "kitten"
};
function checkObj(checkProp) {
if(myObj.hasOwnProperty(checkProp)){
		  return myObj[checkProp];//注意这里
}
return "Not Found";
}
console.log(checkObj("pet"));//此时传入的属性名使用引号引起来的,必须使用[]来访问对象的属性值
  1. 使用[]访问对象中的属性
    属性名用引号包裹,["name"]
    []中没有用引号包裹的,会被当成变量处理

  • 遍历对象的属性 for-in
for(var key in obj){
		//key-->属性名--变量
		console.log(key,'-----',obj[key]);
	}

  • 删除对象中的属性 delete obj.name;

例,删除对象中的属性值为空的属性:

var obj ={
	name:"bob",
	gender:'',
	address:null
};
for(var key in obj){
	if(!obj[key]){
		delete obj[key];
	}
}

  • 检测属性
  1. in 检测是否是自有属性或继承属性
console.log("name" in obj);//true
console.log("toString" in obj);//true
  1. hasOwnProperty() 判断是否是自有属性

自有属性返回true,继承属性返回false,如果重写了toString()方法,则返回true

console.log(obj.hasOwnProperty("name"));//true
console.log(obj.hasOwnProperty("toString"));//false
  1. propertyIsEnumerable() 判断是否是自有属性,且是可枚举的
console.log(obj.propertyIsEnumerable("name"));//true
  1. 判断是否是继承属性
function inherit(attr){
		if((attr in obj)&&!obj.hasOwnProperty(attr)){
		console.log("是继承属性");
		}else{
		console.log("不是继承属性");
			}
	}

  • 对象序列化–将对象的状态转换为字符串,用""引起来

JSON – JavaScript Object Notation JavaScript对象表示法

  1. JSON.stringify(obj) 将对象序列化为JSON字符串
    只能序列化对象可枚举的自有属性
  2. JSON.parse(jsonStr) 反序列化,将字符串还原为对象函数
    RegExp,Error对象,undefined,函数均不能序列化和反序列化

每一个构造函数都有一个原型对象
实例可以调用对应的构造函数中的原型对象的属性和方法

  • Object的原型对象
    console.log(Object.prototype);//{}
  • 实例中没有属性和方法,实际上是使用的原型对象中的属性和方法
    console.log(obj.toString === Object.prototype.toString);//true
  • Object的原型中的属性与方法
    1.constructor 获取当前对象的构造函数
    console.log(Object.prototype.constructor === Object);//true
    console.log(obj.constructor);//Object
    通过实例找构造函数
    console.log(obj.constructor);//[Function: Object]
    2.toString() 返回对象的字符串表示
    console.log(obj.toString());//'[object Object]'
    对象调用toString()方法默认返回 '[object Object]'
    3.valueOf() 返回对象的原始值
    4.hasOwnProperty() 判断是否是自有属性
    5.propertyIsEnumerable() 判断是否是自有属性,且可枚举的
    6.isPrototypeOf()
    a.isPrototypeOf(b) 判断a是否是对象b的原型
    Object.prototype.isPrototypeOf(obj)//true
    7.toLocaleString() 将时间转换为本地日期和时间的格式
    2019-7-11 3:25:09 PM
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

King_960725

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值