美文网首页
ES6-对象初始化

ES6-对象初始化

作者: zhenghongmo | 来源:发表于2020-03-13 16:37 被阅读0次

产生一个新对象(对象初始化)

  1. var a = new Object()产生了一个空对象,有proto属性指向object

  2. var b = Object,create(null),产生了一个空对象,但是没有proto

  3. var c = Object.create(Object,prototype)产生一个空对象,有proto

  4. var d = {},产生一个空对象,有proto

属性定义

var a = 1;
var b = 2;
var obj = {
    a:a,
    b:b
} 
// obj = {a: 1,b: 2}

//转为ES6的写法
var obj = {a,b}  //a的值为a,b的值为b
  • 属性名可以是表达式
var name = 'a'
var obj = {[name]:1}  //obj={a:1}
用属性放在[]中,表示引用变量

方法定义

  • get 、set
var o ={
    _age = 18,
    get age(){return o._age},
    set age(value){
        if(value<100){
            o._age = value
        }else{
            o._age = 100
        }
    }
}

o.age   //返回18
o.age = 1000  // 0.age返回100

Object.defineProperty()

var a;
var i = 0;
Object.defineProperty(window,'a',{
    get(){
        i+=1;
        return i
    }
})

// a===1&&a===2&&a===3成立

Object,assign()

  • 将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。
var obj1 = {a:1,b:2,c:3}
var obj2 = Object.assign({},obj1)
obj2  //{a:1,b:2,c:3}

//把obj1中的每一个key,value都复制到{}中,然后返回这个对象
//实现浅拷贝,改变obj2.a不影响obj1.a

------------------
var obj3 = {...obj1}
//实现的效果与obj2相同

writable 、configurable 、enumerable

  • writable
    • 要实现属性只读有两种常见方法:
//只写get方法,不写set方法
var o = {
    get name(){return 'leo'}
}
//将writable设为false
Object.defineProperty(o,'name',{value:'leo',writable:false})

o.name  //’leo‘
o.name = 'tom'  //o.name还是’leo‘
  • configurable
    • 是否可配置
  • enumerable
    • 是否可枚举(是否能被遍历)
var o={a:1,c:3}
Object.defineProperty(o,'b',{value:2,enumerable:false})
for(let key in o){
    console.log(key)   //打印出a、c
}
  • Object.getOwnPropertyDescriptor(o,'b')可以查看对象o中的'b'属性是否可写、可枚举、可配置等详细信息

相关文章

  • ES6-对象初始化

    产生一个新对象(对象初始化) var a = new Object()产生了一个空对象,有proto属性指向obj...

  • 2019-01-24

    ES6-之 filter

  • ES6-对象

    一、 对象表达式 如果想在对象里添加跟变量名一样的属性,并且属性的值就是变量表示的值,我们可以直接在对象里加上这...

  • ES6-对象

    Object.is()方法 在js中比较两个值时,你可能会用相等运算符==或者严格相等运算符 ===。为了避免在比...

  • es6-对象扩展

    函数新增特性 简洁表示法 属性表达式 扩展运算符 Object新增方法 简介表示法 属性简写 方法简写 属性表达式...

  • ES6-面向对象

    1、区别 es5(js)中没有一个类的概念,只有构造方法在es6中 js模拟了其他语言实现类的概念,让对象可以由类...

  • ES6-对象拓展

    1. 对象的扩展 2. 面向对象 在JS5中, 没有一个类的概念,只有构造方法。 而 ES6中, JS 模拟了其...

  • GeekBand OC 5. 初始化器与析构器

    初始化器(初始化) 对象初始化器:-(id) 类型初始化器:+(void) 析构器(释放) 对象析构器:-(voi...

  • iOS 录音方法

    iOS 录音功能 初始化AVAudioRecorder 对象 初始化一个AVAudioRecorder 对象 参数...

  • 初始化器

    初始化器用于初始化对象实例或类型 对象初始化器: -(id)init 可以重载多个 类型初始化器:+(void)i...

网友评论

      本文标题:ES6-对象初始化

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