《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()的区别在于:前者可以获得不可枚举的属性,而后者不可以。

时间: 2024-10-09 01:49:47

《JavaScript权威指南》学习笔记——Day3的相关文章

JavaScript权威指南学习笔记之一

1.关于分号 javascript里面不强制使用分号来表示一行语句的结束,但是最好能够在写js之前,特别是在原有的js上面新增时,最好前置一个分号.避免这种情况发生:  2.JavaScript类型转换 3.关于=== ①如果类型不同则不等 ②null===null或undefined===undefined ③true===true或false===false ④NaN不等 ⑤0===0 0===-0 ⑥如果是同一个object,array,function则相等 4.关于== ①如果已经==

javascript权威指南学习笔记1

打开这本书,进入到javascript的世界.以前都是看各种视频,感觉什么收获也没有,反而弄得脑袋混乱,希望能够按照这本书的节奏掌握javascript这门语言,为我的前端学习打下基础. 学习前准备:web浏览器(F12用来唤醒和关闭firebug界面,ctrl+shift+j用来唤醒错误工作台,console.log()调试辅助) 本书分为4个部分:Javascript语言核心:客户端Javascript:Javascript核心参考:客户端Javascript参考.今天主要学了第一部分.主要

javascript权威指南学习笔记2

Javascript语言核心(2~12章) 第三章:类型.值.变量 1.数字: overflow(Infinity, -Infinity).underflow(+0,-0) 非数字值:它和任何值都不相等,包括自身.if(x!=x) return NAN:==>isNaN()判断是不是NaN或者字符串等 javascript的精度要注意,即(0.3-0.2)!=(0.2-0.1) Date()构造函数:月份从0开始计数,天数从1开始计数,星期天是0: 2.文本: 转义字符(牢记斜杠后面几个特殊的值

javascript 权威指南学习笔记

//通过id查找多个元素 function getElements(/*ids...*/){ var elements = {}: for(var i=0; i<arguments.length; i++){ var id = arguments[i]; var elt =document.getElementById("id"); if(elt == null) throw new Error("No element with id :" +id); ele

Git权威指南学习笔记(一)Git初始化

1.在Git中配置用户名和邮件地址 $ git config --global user.name "Jymn_Chen" $ git config --global user.email "[email protected]" 注意把用户名和邮件地址替换成你自己的资料. 在这里的参数global表示配置的作用范围是当前用户,如果将参数改为system,那么配置的作用范围是系统中的所有用户. 2.创建版本库 新建一个目录并cd到目录中,执行以下命令: $ git i

Git权威指南学习笔记(二)Git暂存区

如下图所示: 左侧为工作区,是我们的工作目录. 右侧为版本库,其中: index标记的是暂存区(stage),所处目录为.git/index,记录了文件的状态和变更信息. master标记的是master分支所代表的目录树.HEAD指向master分支. objects标记的是Git的对象库,所处目录为.git/objects,文件索引建立了文件和对象库中对象实体之间的映射关系. 通过该图我们可以清晰地看出add,commit等命令的转化关系.下面通过git diff和git status两条命

MongoDB权威指南学习笔记4---查询相关的知识点

1 find find({查询条件},{"key":1,"email":1})  后面表示返回哪些键 2 可用的比较操作符 $lt , $lte,$gt,$gte 比如db.users.find({"age":{"$gte":18,"$lte":30}}) 3不等于 find(...{"key":{"$ne":"value"}} 4 in find

MongoDB权威指南学习笔记5---索引相关的知识点

1 查看查询计划 db.user.find({"username":"xxx"}) .explain() db.doc.find({"es_y":"2014"}).explain() {  "cursor" : "BasicCursor",  "isMultiKey" : false,  "n" : 0,  "nscannedObject

Hadoop权威指南学习笔记一

Hadoop权威指南学习笔记一 声明:本文是本人基于Hadoop权威指南学习的一些个人理解和笔记,仅供学习参考,有什么不到之处还望指出,一起学习一起进步. 转载请注明:http://blog.csdn.net/my_acm 1. 数据的增长远远超过了磁盘的读取速度,传统的数据存储方式和分析方式变得不再适用于大数据的处理. Hadoop分为两大核心技术,HDFS(HadoopDistributed File System-分布式hadoop文件处理系统)和MapReduce(分为Map-数据映射等

sencha touch权威指南---学习笔记5-经纬度获取计算直线距离

<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head>    <meta charset="utf-8" />    <title></title>    <link rel="stylesheet" href="sdk-touch/resources/css/sencha-touch.