zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    通过field:global给子元素添加css样式
    TP5 调用邮箱接口
    php数组使用json_encode函数中文被编码成null的原因和解决办法
    UNIX系统上的抓包工具tcpdump常用命令说明
    快速搭建ELK7.5版本的日志分析系统--搭建篇
    Kubernetes实战之部署ELK Stack收集平台日志
    k8s实战之部署Prometheus+Grafana可视化监控告警平台
    Linux防火墙firewalld安全设置
    在zabbix中实现发送带有图片的邮件和微信告警
    用Dockerfile部署zabbix
  • 原文地址:https://www.cnblogs.com/hack-ing/p/12005414.html
Copyright © 2011-2022 走看看