JavaScript:Object对象的属性方法


Object.defineProperty()

Object.defineProperty()方法---为对象添加属性---Vue的源码中经常用到

// Object.defineProperty()方法---为对象添加属性---Vue的源码中经常用到
const person = {
    firstName: '呼呼',
    lastName: '憨憨'
}

// // 为某个对象添加一个属性,并对该属性进行一些配置操作
Object.defineProperty(person, 'fullName', {
    configurable: false, //默认是不能被删除false(属性相关的操作)
    enumerable: true, //默认是false,能否被枚举遍历
    //value:'自己填写默认值' //默认值
    //writable.false, //默认是false,能否被修改--重写
    // 获取(读取),外部在获取fullName这个属性的时候,会进入到这个get方法
    get() {
        return this.firstName + '_' + this.lastName
    },

    // 设置(写入),外部在为fullName这个属性赋值的时候,会进入到这个set方法
    set(val) {
        const names = val.split('_') //根据_下划线拆分数组
        this.firstName = names[0] //拆分为--呼呼
        this.lastName = names[1] //拆分为-- 憨憨
    }
})

//// 当前对象中添加了一个属性
person.fullName = person.firstName + '_' + person.lastName
console.log(person.fullName) //打印出-->呼呼_憨憨
person.fullName = '上官_婉儿'
console.log(person.firstName, person.lastName) // 打印出---> 上官 婉儿
person.firstName = '西门'
person.lastName = '大郎'
console.log(person.fullName) //打印出--> 西门_大郎

Object.create()

// 姓氏 和 名字 -----> 姓名 ,任意一个变化,其他的也应该自动的变化
function Person() {}
Person.prototype.sayHi = function() {
    console.log('hello baby')
}

//
function Student() {}
////Student的原型指向改变了,指向了 Person的实例对象
const per = new Person()
Student.prototype = per
////实例化Student
const stu = new Student()
stu.sayHi() // 打印--hello baby'
console.log(Student.prototype === per) //打印 true
console.log(stu.__proto__ === Student.prototype) //打印 true

// // stu的隐式原型指向了per实例对象
console.log(stu.__proto__ === per) //打印 true

////------------ //Object.create()--------
const person = {
    name: '小明',
    eat: function() {
        console.log('小明最有名的童鞋')
    }
}

//// 设置stu对象的隐式原型指向了person对象
const stu = Object.create(person)
console.log(stu.name) // 打印----小明
stu.eat() //打印---小明最有名的童鞋
console.log(stu.__proto__ === person) //true

Object.keys()


  • 本文作者:下载幸福
  • 本文链接:https://aio.webkit.top/?post=11
  • 版权申明:除非特别说明,否则均为本站原创文章,转载或复制请注明出处。

KindEditor文章

TinyMCE文章

评 论
更换验证码