zoukankan      html  css  js  c++  java
  • js Object assigndefindPropertyentriesvaluesgetOwnPropertyDescriptor等方法使用

    简单的进行了测试,进行了记录。详细参见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>
    
  • 相关阅读:
    JS、LUA都可以开发移动应用
    正在融资中的快速移动应用开发平台
    赶快加入快速移动应用开发吧
    重新诠释移动应用开发
    快速开发移动应用的利器
    报表实施案例:某市利用大数据助力精准扶贫项目开展
    【新手速成】菜鸟如何在三天内完成系统开发
    全新Wijmo5中文学习指南正式上线
    SpreadJS 在 Angular2 中支持绑定哪些属性?
    【报表福利大放送】100余套报表模板免费下
  • 原文地址:https://www.cnblogs.com/cqxhl/p/12993283.html
Copyright © 2011-2022 走看看