javascript对象的方法

JavaScript 对象的方法


create 初始化

在这里插入图片描述

	使用create创建对象,传入null没有任何属性,没有继承Object上的任何属性
	传入{}创建对象,继承了Object上的属性,挂载在Object的原型链上

assign 浅拷贝

	let obj = {name:'李白',list:[1,2,3,4],obj:{list:[1,2,3,4]}}
	let obj1 = Object.assign({},obj) // obj1 = = {name:'李白',list:[1,2,3,4],obj:{list:[1,2,3,4]}}
	obj.list = [1,2] // obj.list = [1, 2]  obj1.list = [1, 2, 3, 4]
	obj.obj.list = [1,2] //  obj.obj.list = [1, 2]  obj1.obj.list = [1, 2]

defineProperty 给对象添加或修改一个属性

	// 添加或修改一个对象的属性
	var obj = {}
	Object.defineProperty(obj,'name',{
	    value: 'xxx', // 值
	    writable: false, // writable 是否可以修改该属性的值,默认 false
	    configurable: false, // configurable 是否可以修改该属性的描述,,默认 false
	    enumerable: false // 该属性是否出现在对象的枚举属性中,默认 false
	})

	var obj = {}
	Object.defineProperty(obj,'name',{
	    get(val){  // 获取该属性的值时调用 get 函数
	        console.log(val,'get')
	    },
	    set(val){  // 设置该属性的值时调用 set 函数
	        console.log(val,'set')
	    },
	})
	obj.name = 'xxx'
	// xxx set
	// 'xxx'

defineProperties 给对象添加或修改多个属性

	// 添加或修改一个对象的属性,并返回一个对象
	var obj = {}
	Object.defineProperties(obj,{
	    name:{
	        value:'xxx'
	    }
	})
	// 跟 defineProperty 相比,defineProties 可以设置多个值

keys、values、entries 、fromEntries 获取对象的键、值

	var obj = {name:'xxx',age:24}
	Object.keys(obj) // 返回一个数组 ['name','age']
	Object.values(obj) // 返回一个数组 ['xxx',24]
	Object.entries (obj) // 返回一个二维数组 [['name','age'],['xxx',24]]
	
	// fromEntries  可以把只有两个值的二维数组转换为对象,跟 entries 相反
	var entries = [['name', 'xxx'],['age', 24]]
	var obj1 = Object.fromEntries(entries); // obj1 = {name:'xxx',age:24}

freeze 冻结 isFrozen 判断方法是否被冻结

	// 冻结对象,冻结之后对象的值无法修改
	var obj = {name:'xxx'}
	var obj1 = Object.freeze(obj)
	obj1.name = 'eee' // {name: 'xxx'}
	obj.name = 'hhh' // {name: 'xxx'}

	// 判断方法是否被冻结
	Object.isFrozen(obj) // true

getOwnPropertyDescriptor 获取对象属性上的描述符的值

	/**描述符
	* value
	* writable
	* configurable
	* enumerable
	*/	 
	var obj = {name:'xxx'}
	var a = Object.getOwnPropertyDescriptor(obj,'name')
	console.log(a.value) // 'xxx'
    console.log(a.writable) // true
    console.log(a.configurable) // true
   	console.log(a.enumerable) // true

getOwnPropertyDescriptors 获取一个对象的所有属性的描述符

	var obj = {
    	name:'xxx'
	}
	Object.getOwnPropertyDescriptors(obj)
	// {naem:{
	//		configurable: true
	//		enumerable: true
	//		value: "xxx"
	//		writable: true
	// }}

getOwnPropertyNames 通过一个数组返回一个对象的所有属性(可枚举及不可枚举)

	var obj = {name:'xxx',age:24}
	Object.getOwnPropertyNames (obj) // ['name', 'age']

getPrototypeOf 返回对象的原型

	const a= {};
	const obj = Object.create(a);
	console.log(Object.getPrototypeOf(obj) === a); // true

is 判断两个值是否相等

	var a = 1,b = true
	a == b // true 只判断值是否相等、类型可以不相等
	a === b // false 判断值、类型全部相等
	Object.is(a,b) // false 等同于 === ,不过 is 方法的两个值如果是NaN也是返回true,有区分 +0 和 -0

isExtensible // 指定值是否可以添加属性 isSealed // 判断一个对象是否是密封的(不可添加属性)

	const obj= {};
	console.log(Object.isExtensible(obj)); // true
	Object.preventExtensions(obj);
	console.log(Object.isExtensible(obj)); // false

	Object.isSealed(obj) // true

preventExtensions


seal 阻止添加属性

	var obj = {}
	obj.name = 'xxx' // {name:'xxx'}
	Object.seal(obj)
	obj.age = 24 // {name:'xxx'}

setPrototypeOf 给对象添加原型

	function a(){}
	var b = {}
	Object.setPrototypeOf(b,new a())
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值