tonysmithone 2017-11-07 08:29 采纳率: 0%
浏览 794

js权威指南里的一段代码,我想测试一个,问题是如何调用这个对象方法,新手求助大神

将p中的属性及特性复制到o对象中,怎么调用这个模板对象方法extend

 /*
    *给Object.prototype添加一个不可枚举的extend()方法
    这个方法继承自调用它的对象,将作为参数传入的对象的属性一一复制
    除了值之外,也复制属性的所有特性,除非在目标对象中存在同名的属性
    参数对象的所有自有对象(包括不可枚举的属性)也会一一复制
*/
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;
                }
                var desc = Object.getOwnPropertyDescriptor(o, names[i]); //获取o中的属性描述符
                Object.defineProperty(this, names[i], desc);    //用它给当前对象(this)创建一个属性
            }
        }
    });

    //将o中的属性及特性复制到p中
    var p = {};
    var o = Object.defineProperties({}, {
        x: {
            value: 1,
            writable: true,
            enumerable: true,
            configurable: true
        },
        y: {
            value: 1,
            writable: true,
            enumerable: true,
            configurable: true
        },
        r: {
            get: function() {
                return Math.sqrt(this.x * this.x + this.y * this.y)
            },
            enumerable: true,
            configurable: true
        }
    });
  • 写回答

1条回答

  • fcyh 2017-11-07 08:31
    关注

    那你直接新建出来,然后再直接调用里边的方法或者是属性

    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?