js Object assign\defindProperty\entries\values\getOwnPropertyDescriptor等方法使用
简单的进行了测试,进行了记录。详细参见MDN:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object
欢迎指正与交流
<template>
<div>
<a
href="https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object"
target="_blank"
rel="noopener noreferrer"
>文档地址</a>
<span>object keys使用:</span>
<ul>
<li v-for="(item,index) of this._keys" :key="index">{{item}}</li>
</ul>
</div>
</template>
<script>
export default {
data() {
return {
student: {
name: "jonny",
age: 25,
gender: "male",
address: "重庆渝北龙兴",
classes: {
name: "1490008班",
teacher: "小王"
}
},
assignStudent: {}
};
},
created() {
this._defindProperty(this.student);
//测试修改值
//this.student.department='传媒学院';
this._assign(this.student);
//使用多个属性定义修改克隆的对象
this._defineProperties(this.assignStudent);
//对象属性描述
this._getOwnPropertyDescriptor(this.student,'gender');
this._entries(this.student);
this._values(this.student);
},
computed: {
_keys() {
return Object.keys(this.student);
}
},
methods: {
//通过复制一个或多个对象来创建一个新的对象。
_assign(student) {
Object.assign(this.assignStudent, student);
},
_defindProperty(obj) {
Object.defineProperty(obj, "department", {
configurable: true, //configurable特性表示对象的属性是否可以被删除,以及除value和writable特性外的其他特性是否可以被修改。
value: "软件学院",
enumerable: true, //enumerable定义了对象的属性是否可以在 for...in 循环和 Object.keys() 中被枚举。
writable: false //当writable属性设置为false时,该属性被称为“不可写”。它不能被重新分配。
});
},
_defineProperties(obj) {
Object.defineProperties(obj, {
department: {
configurable: true, //configurable特性表示对象的属性是否可以被删除,以及除value和writable特性外的其他特性是否可以被修改。
value: "软件学院",
enumerable: true, //enumerable定义了对象的属性是否可以在 for...in 循环和 Object.keys() 中被枚举。
writable: false //当writable属性设置为false时,该属性被称为“不可写”。它不能被重新分配。
},
love:{
enumerable:true,
value:['篮球','打游戏','唱歌','跳舞']
}
});
},
/**
* 获取属性定义
*/
_getOwnPropertyDescriptor(obj,property){
console.log(`对象属性【${property}】描述:`,Object.getOwnPropertyDescriptor(obj,property));
},
_entries(obj) {
for (let [key, value] of Object.entries(obj)) {
if (typeof value === "object") {
this._entries(value);
} else console.log(`key:${key},value:${value}`);
}
},
_values(obj) {
console.log("student值为:", Object.values(obj));
}
}
};
</script>