zoukankan      html  css  js  c++  java
  • 实现一个extend函数

    NOW,今天让我们来实现一个extend函数。

    具体思路: 使用Object.defineProperty()对属性的特性进行设置,然后通过Object.getOwnPropertyDescriptor()获取到属性描述符,并赋值给新创建的对象

    下面我们把代码拉出来溜溜

        Object.defineProperty(Object.prototype,
            "extend",
            {
                writable: true,
                enumerable: false,
                configurable: true,
                value: function(o){
                    // 获取所有的自有属性
                    var names = Object.getOwnPropertyNames(o);
                    for(var i =0;i< names.length;i++){
                        // 如果属性已存在则跳过
                        if(names[i] in this) continue;
                        // 获取该属性的属性描述符ss
                        var desc = Object.getOwnPropertyDescriptor(o,names[i]);
                        Object.defineProperty(this,names[i],desc)
                    }
                }
            }            
        )   

    使用示例:

      // 定义一个新对象
        var a = {
            itemA: 1
        }
        // 新建一个属性,并设置属性描述符
        Object.defineProperty(a,"itemB",{
            writable: true,
            enumerable: false,
            configurable: true,
            value: 2
        })
        // 再定义一个新对象
        var b = {}
        b.extend(a)
        // 此时我们可以看到静态属性已经继承过去了
        console.log(b)  // 结果为{itemA: 1,itemB: 2}
        //再来看看属性描述符是不是也过去了
        let extendDesc = Object.getOwnPropertyDescriptor(b,"itemB")
        console.log(extendDesc)  // 结果为{value: 2, writable: true, enumerable: false, configurable: true}

    好了,结束,有机会我们一起来模拟实现一下Object.create()函数

     

  • 相关阅读:
    Linux 常用命令 2
    Linux常用的命令
    linux的发行版
    操作系统介绍
    Python学习-列表的转换和增加操作
    Python学习-列表的修改,删除操作
    Python学习-初始列表
    Python学习-range的用法
    Python学习-字符串的基本知识
    Python学习-字符串函数操作3
  • 原文地址:https://www.cnblogs.com/suihang/p/11546419.html
Copyright © 2011-2022 走看看