js对象属性

作者: 青色琉璃 | 来源:发表于2019-07-09 10:52 被阅读0次

数据属性

  • [[Enumerable]]:是否可遍历,也就是是否可以通过for-in找到该属性,默认为true
  • [[Writable]]:是否可修改,默认为true
  • [[Value]]:属性值,默认undefined
    [[Configuarble]]:表示能否通过delete属性从而重新定义属性,能否修改属性的特征,总的来说就是是否允许修改属性,默认值为true
var obj = {
    age:20,
    name:'ming'
}
// 对于直接在字面量中定义的属性,configurable,writable,enumerable属性都是true

// 对于在defineProperty中定义的属性,configurable,writable,enumerable属性都是false
Object.defineProperty(obj,'name',{
    writable:false,   // 不写也没关系,反正都是false
    configurable:true,
    value:'dong'
})
console.log(obj.name)   // dong
obj.name="wei";
console.log(obj.name)   //dong,因为不能修改

console.log(Object.getOwnPropertyDescriptor(obj,'name'))  // 查看属性

delete obj.name;
console.log(obj)   //{name:20}  name属性被删除了

console.log(Object.getOwnPropertyDescriptor(obj,'name'))  // undefined,没有name属性了

访问器属性

var person = {
    _year:2010,
    age:0,
}
// 这里year必须要用_year来保存自己的值,否则在get中获取自身的值,会一直循环
Object.defineProperty(person,'year',{
    get:function(){
        console.log('get')
        return this._year;
    },
    set:function(newYear){
        if(newYear>this._year){
            console.log('set')
            this.age=newYear-this._year;
            this._year = newYear;
            return this.age;
        }
        
    },
    configurable:false
})
        
person.year = 2019;
console.log(person.age);    // set 9
console.log(person.year);   // get 2019

相关文章

  • Node.js模块与npm包管理

    一、Node.js模块对象的属性 在Node.js模块内部,模块对象具有以下的属性: module.id:属性值是...

  • 对象

    js对象 js对象是j's的基本数据类型, js中的对象是动态的, 可以新增属性,也可以删除属性。 1.获取时间 ...

  • JavaScript 面向对象的程序设计

    理解 JS 的对象 在 JS 中,对象被定义为——“无序属性的集合,其属性可以包含基本值、对象或函数。“ 我们可以...

  • JavaScript中对像的属性

    在JavaScript中,对象是属性的无序集合,通过对JS属性的理解可以更好地了解JS对象。 属性的构成与分类 在...

  • 2019-11-27

    1.js 对象属性 2.js 对象方法 3.对象访问器 4.对象构造器 5.对象构造器加属性 6.对象方法 7.j...

  • js常用知识点总结-String对象

    js常用知识点总结-String对象 使用String对象: String对象属性: 属性描述constructo...

  • JS Tips

    遍历对象的所有属性 添加属性 给普通的 JS 对象添加属性: 但是对于 Mongodb 中的对象,不可直接添加属性...

  • js对象属性

    1.property的操作属性 [[Configurable]] 可以使用delete操作删除属性 默认值为tru...

  • js对象属性

    数据属性 [[Enumerable]]:是否可遍历,也就是是否可以通过for-in找到该属性,默认为true [[...

  • JS对象属性

网友评论

    本文标题:js对象属性

    本文链接:https://www.haomeiwen.com/subject/trgtkctx.html