首页 > 其他 > 详细

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

时间:2019-12-08 13:45:28      阅读:70      评论:0      收藏:0      [点我收藏+]

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

 

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

原文:https://www.cnblogs.com/hack-ing/p/12005414.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!