JS对象—3.系统函数(Object)

.静态属性方法
	1.创建对象
		new Object()
		create(原型对象, 属性描述对象) 创建新对象
    	示例: Object.create({a: 1},
       		  {b: {value: 2,writable: true, enumerable: true }});
	2.定义/修改属性
		defineProperty(对象, 属性名, 属性描述) 定义单个属性
		示例: Object.defineProperty(obj, "aa",{
	    	  value:2, writable:true, enumerable:false, configurable:true}) :设置对象属性特性
	    definePropertys(对象, 属性描述对象) 定义多个属性
	        示例: Object.definePropertys(obj, {
		    	x: { value: 2 },
		    	y: { get: function(){return 1;}, set:undefined, enumerable:false, configurable: true } 
		    })
	3.枚举属性
		keys(对象)  返回对象自身可枚举属性名的数组
		values(对象) 返回对象自身可枚举属性值的数组
		getOwnPropertyNames(对象)  返回对象所有的自身属性名称的数组
		getOwnPropertySymbols(对象) 返回对象自身的Symbol属性的数组
	4.查看属性
		getOwnPropertyDescriptor(对象, 属性名)  返回对象自身属性描述
		getOwnPropertyDescriptors(对象)  返回对象自身所有属性描述
		
	5.属性扩展性
		isExtensible(对象) 判断是否可扩展
		preventExtensions(对象) 设为 不可扩展 = 不可新增  (删改查)
		isSealed(对象) 判断是否封闭
		seal(对象) 设为 封闭 = 不可拓展 + 不可配置  (改查)
		isFrozen(对象) 判断是否冻结
		freeze(对象) 设为冻结= 不可拓展 + 不可配置 + 不可写  (): 空对象(无法删) + 不可拓展 = 封闭
			冻结的对象的存取器setter方法依然有效
	6.获取设置原型
		getPrototypeOf(对象) 获取对象的原型
		setPrototypeOf(对象, 新原型) 设置对象原型
		注: 通过create,getOwnPropertyDescriptors,getPrototypeOf
			3个方法可以实现对象全面浅拷贝
	7.工具方法
		assign(目标对象, 源对象1, 源对象2..) 将源对象的自身可枚举属性合并到目标对象/数组中(ES6新添)
		entries(对象/数组/字符串) 分割对象,返回 [[key1/index0, value1], [],...]
		is(1,2) 比较两个值是否严格相等,类似===,不同之处如下
			Object.is(+0, -0)false, Object.is(NaN, NaN)true
		Object.prototype.toString.call(对象) 获取对象的类型名/构造函数名(间接使用Function.prototype的call方法).对象属性方法(继承自Object.prototype,都是不可枚举的)
	1.检测属性
		hasOwnProperty(属性名) 检测对象自身属性是否存在
		propertyIsEnumerable(属性名) 检测对象自身属性是否存在且是可枚举的
	2.原型相关
		isPrototypeOf(目标对象) 判断自身是否为目标对象的原型
		__proto__ 原型属性,获取/设置原型对象 (不推荐使用,某些浏览器不兼容)
		constructor 构造函数默认的原型对象里自带,(故Object.prototype才有,又被所有对象继承)
					重设原型除非自己显式增加这个属性
 	3.转换
 		valueOf() 对象数值运算时隐式调用, 默认返回对象本身
 		toString() 对象字符串运算时隐式调用, 默认返回"[object object]", 除非重写此方法
 			toLocaleString() 默认执行toString(),好像只有Date重写了此方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值