首页 > 代码库 > 《JavaScript权威指南》学习笔记——Day3

《JavaScript权威指南》学习笔记——Day3

今天看到对象这一章节,对象这一章需要理解的内容非常的多,而且比较的晦涩。在书中看到一个方法,理解透彻了,写下来再复习复习,捋一捋思路。

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

值得一提的是Object.getOwnPropertyNames()和Object.keys()的区别在于:前者可以获得不可枚举的属性,而后者不可以。

《JavaScript权威指南》学习笔记——Day3