Más información sobre el método de objeto antes del proxy

Object.getPrototypeOf ()

Devuelve el prototipo del objeto especificado.

var pro = {
    
    }
var obj1 = Object.create(pro)
console.log(Object.getPrototypeOf(obj1)==pro)

//true

Object.setPrototypeOf ()

Establecer el prototipo de un objeto especificado en otro objeto o nulo

Object.setPrototypeOf(obj,prototype)

Parámetro
obj: para el objeto cuyo
prototipo necesita ser cambiado prototipo: el prototipo especificado para obj

Object.isExtensible ()

Determinar si un objeto se puede extender (si se pueden agregar nuevos atributos)

var obj1={
    
    }
Object.preventExtension(obj1)//变为不可扩展
console.log(Object.isExtensible(obj1))   //false

var sealObj ={
    
    }
obj2 = Object.seal(sealObj) //密封对象不可扩展
console.log(Object.isExtensible(sealObj))  //false

var frozenObj = {
    
    }
forzenObj = Object.freeze(frozenObj)
console.log(Object.isExtensible(frozenObj)) 

Object.preventExtension

Si un objeto se vuelve no extensible, el uso específico se muestra en isExtensible

Object.getOwnPropertyDescriptor

Devuelve un descriptor de atributo libre del objeto especificado, el primer parámetro es el objeto especificado y el segundo parámetro es el atributo del descriptor que se va a obtener

var obj= {
    
    }
Object.defineProperty(obj,"keyOne",{
    
    
	value:"Hello world",
	writable:false,  //属性不由运算符赋值
	enumerable:false	//属性不可枚举
})
console.log(Object.getOwnPropertyDescriptor(obj,"keyOne"))
// { value: "Hello world", writable: false, enumerable: false, configurable: false }

Object.defineProperty

Agregue un atributo y su descriptor a un objeto, el primer parámetro es el objeto especificado, el segundo parámetro es el nombre del atributo y el tercer parámetro es el objeto descriptor

Descriptor atributo
valor atributo valor El valor predeterminado es indefinido
escribible si el operador puede modificar el atributo El valor predeterminado es falso
enumerable si el atributo es enumerable El valor predeterminado es falso
Si el atributo configurable se puede eliminar El valor predeterminado es verdadero

var obj ={
    
    
	keyOne:"hey"
}
Object.defineProperty(obj,"keyTwo",{
    
    
	value:"Hellow World",
	writable:false,
	enumerable:false,
	configurable:true
})
//对obj对象新增了一个属性keyTwo,该属性值为"Hello World",不可修改,不可枚举,可被删除,接下里我们一个一个试一下

console.log(obj.keyTwo)   //Hello World

obj.keyTwo="bye bye"
console.log(obj,keyTwo)     //Hello World

for(let key in obj){
    
    
	console.log(key)		//keyOne
}
delete obj.keyTwo
console.log(obj.keyTwo)		//undefined

Object.keys

Devuelve una matriz de propiedades enumerables del objeto especificado.

var obj={
    
    
	keyOne:0,
	keyTwo:1,
	keyThree:2
}
console.log(Object.keys(obj))	//[ 'keyOne', 'keyTwo', 'keyThree' ]

Object.getOwnPropertyNames ()

Devuelve una matriz de las propiedades de un objeto especificado, incluidas las propiedades enumerables y no enumerables.

var obj={
    
    
    keyOne:0,
    keyTwo:1,
    keyThree:2
}
Object.defineProperty(obj,"keyFour",{
    
    
    value:4,
    enumerable:false
})
console.log(Object.keys(obj)) 	//[ 'keyOne', 'keyTwo', 'keyThree' ]

console.log(Object.getOwnPropertyNames(obj))	//[ 'keyOne', 'keyTwo', 'keyThree', 'keyFour' ]

Object.getOwnPropertySymbols

Devuelve una matriz de todos los atributos de símbolo del objeto especificado.

var symbolKey1 = Symbol("keyOne")
var symbolKey2 = Symbol.for("keyTwo")
//symbol() 和 symbol.for()的区别是   symbol不会检索全局 每次都创建一个新的symbol类型值,symbol.for(key)会先检索全局,如果key已存在则会返回已存在的symbol类型值,不存在的话则会创建一个新的symbol值

var obj={
    
    }
obj[symbolKey1]="symbolkeyOne"
obj[symbolKey2]="symbolKeyTwo"
coconsole.log(Object.getOwnPropertySymbols(obj))  //[ Symbol(keyOne), Symbol(keyTwo) ]

Supongo que te gusta

Origin blog.csdn.net/weixin_38987500/article/details/114097182
Recomendado
Clasificación