美文网首页
对象的扩展

对象的扩展

作者: 向上而活 | 来源:发表于2020-06-15 18:26 被阅读0次

    ES5给Object扩展了好一些静态方法, 常用的2个:

    1. Object.create(prototype, [descriptors])
    • 作用: 以指定对象为原型创建新的对象
    • 为新的对象指定新的属性, 并对属性进行描述
      value : 指定值
      writable : 标识当前属性值是否是可修改的, 默认为false
      configurable: 标识当前属性是否可以被删除 默认为false
      enumerable: 标识当前属性是否能用for in 枚举 默认为false
    1. Object.defineProperties(object, descriptors)
    • 作用: 为指定对象定义扩展多个属性
    • get :用来获取当前属性值得回调函数
    • set :修改当前属性值得触发的回调函数,并且实参即为修改后的值
    • 存取器属性:setter,getter一个用来存值,一个用来取值
    <script type="text/javascript">
        var obj = {name : 'curry', age : 29}
        var obj1 = {};
        obj1 = Object.create(obj, {
            sex : {
                value : '男',
                writable : true
            }
        });
        obj1.sex = '女';
        console.log(obj1.sex);
    
        //Object.defineProperties(object, descriptors)
        var obj2 = {
            firstName : 'curry',
            lastName : 'stephen'
        };
        Object.defineProperties(obj2, {
            fullName : {
                get : function () {
                    return this.firstName + '-' + this.lastName
                },
                set : function (data) {
                    var names = data.split('-');
                    this.firstName = names[0];
                    this.lastName = names[1];
                }
            }
        });
        console.log(obj2.fullName);
        obj2.firstName = 'tim';
        obj2.lastName = 'duncan';
        console.log(obj2.fullName);
        obj2.fullName = 'kobe-bryant';
        console.log(obj2.fullName);
    </script>
    

    对象本身的两个方法
    * get propertyName(){} 用来得到当前属性值的回调函数
    * set propertyName(){} 用来监视当前属性值变化的回调函数

    <script type='text/javascript'>
        var obj = {
            firstName : 'kobe',
            lastName : 'bryant',
            get fullName(){
                return this.firstName + ' ' + this.lastName
            },
            set fullName(data){
                var names = data.split(' ');
                this.firstName = names[0];
                this.lastName = names[1];
            }
        };
        console.log(obj.fullName);
        obj.fullName = 'curry stephen';
        console.log(obj.fullName);
    
    </script>
    

    相关文章

      网友评论

          本文标题:对象的扩展

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