实现一个extend函数
2019-09-18 23:57
1191 查看
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()函数
相关文章推荐
- 利用函数实现求第n个斐波那契数/实现n^k的计算/求取一个非负整数组成它的数字之和/将参数字符串的字符反向排列/实现strlen/n的阶乘/打印整数的每一位
- 如何使用纯win32函数和C语言实现一个简单的文本编辑器
- 写4个同名方法,实现两个整数、两个实数,一个实数一个整数,一个整数一个实数之间的求和。在主调函数中调用这4个方法计算相关的值。(方法的重载)
- 实现一个函数,把一个字符串转换成整数
- 写一个函数实现数组中的元素随机乱序排序
- 需要求3个长方体的体积,写一个基于对象的程序,数据成员包括 length width height 要求用成员函数实现以下功能
- 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
- 自定义一个函数,实现库函数strstr的全部功能
- 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。
- (C语言)字符串替换空格:请实现一个函数,把字符串中的每个空格替换成“%20”
- 【廖雪峰 python教程 课后题 切片】利用切片操作,实现一个trim()函数,去除字符串首尾的空格,注意不要调用str的strip()方法:
- 用c语言实现一个strcat函数功能相同的函数
- 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为(转)
- 整型数组处理算法(十二)请实现一个函数:最长顺子。[风林火山]
- 实现atoi这个函数,将一个字符串转换为整数。如果没有合法的整数,返回0。如果整数超出了32位整数的范围,返回INT_MAX(2147483647)如果是正整数
- 实现一个函数,判断一个数是不是素数。
- The Django Book的一个view函数改用django模板实现
- 实现一个函数把字符串中的每个空格替换成“20%”
- objective-c开发iosapp如何实现一个页面通知另一个页面调用某函数?
- 【C语言】【面试题】【笔试题】.字符串替换空格:请实现一个函数,把字符串中的每个空格替换成“%20”。