• ES5给object扩展的一些静态方法


    1. Object.create(prototype[, descriptors]) : 创建一个新的对象

    1). 以指定对象为原型创建新的对象

    2). 指定新的属性, 并对属性进行描述

    value : 指定值

    writable : 标识当前属性值是否是可修改的, 默认为true

    get : 用来得到当前属性值的回调函数

    set : 用来监视当前属性值变化的回调函数

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    </head>
    <body>
        <script>
            'use strict'
     //  1. Object.create(prototype,[descriptors])
        //   作用:以指定对象作为原形的创建的新对象
        //   为新的对象指定新的属性,并对属性进行描述
        //   value:指定值
        //   writable 标识当前属性是否可以被修改,默认为false
        //   configurable:标识当前属性是否可以被删除,默认为false
        //   enumerable:标识当前属性是否能用for in 枚举,默认为false
    
    
    
          var obj={username:'damu',age:30}
          var obj1={}  
          //Object O是大写
     //     obj1=Object.create(obj);
     //     console.log(obj1)
    
          //obj1 添加属性
        //    obj1=Object.create(obj,{
        //        sex:{
        //            value:'男'
        //        }
    
        //    })
        //    console.log(obj1.sex)
    
           //修改obj1的属性
        //    obj1=Object.create(obj,{
        //        sex:{
        //            value:'男',
        //            writable:true
        //        }
    
        //    })
        //  console.log(obj1.sex)
        //  obj1.sex='女'
        //  console.log(obj1.sex);
    
    
          //   删除obj1的属性
        //    obj1=Object.create(obj,{
        //        sex:{
        //            value:'男',
        //            writable:true,
        //            configurable:true
        //        }
    
        //    })
        //  console.log(obj1.sex)
        //  obj1.sex='女'
        //  console.log(obj1.sex)
        //  delete obj1.sex;
        //  console.log(obj1)
      
                  
         //    for in 枚举
            obj1=Object.create(obj,{
                sex:{
                    value:'',
                    writable:true,
                    configurable:true,
                    enumerable:true
                }
    
            })
    
            for(var i in obj1){
                console.log(i)
            }
    
    
    
        </script>
    </body>
    </html>
    Object create

    2. Object.defineProperties(object, descriptors) : 为指定对象定义扩展多个属性

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>03_Object扩展</title>
    </head>
    <body>
    <!--
    ES5给Object扩展了好一些静态方法, 常用的2个:
    1. Object.create(prototype, [descriptors])
      * 作用: 以指定对象为原型创建新的对象
      * 为新的对象指定新的属性, 并对属性进行描述
        value : 指定值
        writable : 标识当前属性值是否是可修改的, 默认为false
        configurable: 标识当前属性是否可以被删除 默认为false
        enumerable: 标识当前属性是否能用for in 枚举 默认为false
    
    2. Object.defineProperties(object, descriptors)
      * 作用: 为指定对象定义扩展多个属性
      * get :用来获取当前属性值得回调函数
      * set :修改当前属性值得触发的回调函数,并且实参即为修改后的值
      * 存取器属性:setter,getter一个用来存值,一个用来取值
    -->
    <script type="text/javascript">
     
        //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>
    </body>
    </html>
    View Code

    3.

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

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <!--
        对象本身的两个方法
        * 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>
    </body>
    </html>
    View Code
  • 相关阅读:
    Android 最火框架XUtils之注解机制具体解释
    Oracle GoldenGate从oracle db 到非oracle db的初始化数据同步的方法
    Java中接口和抽象类的比較
    spring+springmvc+hibernate架构、maven分模块开发样例小项目案例
    配置Java连接池的两种方式:tomcat方式以及spring方式
    Ant报错之out of memory
    Mybatis 框架文档 超具体笔记
    jsp
    HDU 1251 统计难题(字典树)
    HDU 1251 统计难题(字典树)
  • 原文地址:https://www.cnblogs.com/hack-ing/p/12005414.html
Copyright © 2020-2023  润新知