JavaScript

js基础之对象

2020-06-26  本文已影响0人  Lyan_2ab3

修改对象

const obj = {
a:1
}

obj.a = 2
console.log(obj.a)  // 2

// 打印2 ,如果是还想打印出来obj.a 为1 ,就是组织对象被修改

先介绍下:Object.defineProperty(对象, 属性, 描述符)

数据描述符:

存取描述符

// 正常对象 可写
var obj2 ={
name:'luan'
}
obj2.name = 'lyans'   // 对象可写
console.log(obj2.name)
delete obj2.name  // true  对象可配置 configurable

for (var pp in obj2){
console.log(pp)   // 对象可枚举
}

不可写不可配置不可枚举

Function.prototype = {
name:'lei'
}
console.log(Function.prototype.name) //undefined
// 对象不可写

var a =10;
delete window.a  // false

//configurable    =>    false    该对象不可配置

Object.defineProperty 对数据描述符的设置:

var obj = {}
Object.defineProperty(obj,'name',{
value:'lyan',
writable:false,  // 不可写
configurable:true,
enumerable:true
})

Object.defineProperty 对存取描述符的设置:

var obj = {}
var tempValue = ''
Object.defineProperty(obj,'name',{
//value:'lyan',
//writable:false,  // 不可写
configurable:true,
enumerable:true,
get:function(){
  return tempValue
}
set: function(newValue){
   tempValue = newValue

}
})

(如果在定义时就已经给对象设置了属性,那么此时默认为可写可配置可枚举,在 defineProperty 中如果没有对这三个属性进行修改则默认都为 true

http://www.ferecord.com/lujs-object.html

上一篇 下一篇

猜你喜欢

热点阅读