《权威指南》笔记 -- 8.5 、8.6

原创 2015年07月07日 15:22:06

8.5 作为命名空间的函数

问题:js中无法声明一个代码块内可见的变量。
解决方法:简单定义一个函数用作临时的命名空间。
优点:函数内的变量,不会污染全局命名空间。

把8-3的代码根据自己记忆理解敲了一遍

<!-- 

    extend()拓展函数

    arguments
        - length : 2+
        |
        - type : object

    作用:将后面参数的属性,拓展到第一个参数中
 -->

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
</head>
<body>
    <script type="text/javascript">


    var extend = (function(){

        //如果能在{toString:null}遍历盗toString属性,说明没有这个bug
        //在ie中,与object中自带属性重名的属性,是无法被遍历的
        for(var p in {toString:null}){
            return function extend(o){
                for(var i = 1; i < arguments.length;i++)
                {
                    var source = arguments[i];
                    for(var prop in source)
                    {
                        o[prop] = source[prop];
                    }
                }
                return o;
            }
        }

        //下面是存在bug的情况
        //Object.prototype上的属性不能被枚举
        //在末尾将这些属性单独拿出来,一一遍历
        return function patched_extend(o){
            for(var i = 1; i<arguments.length ; i++)
            {
                var source = arguments[i];
                for(var prop in source)
                {
                    o[prop] = source[prop];
                }
                for(var j=0;j<protoprops.length;j++)
                {
                    var prop = protoprops[j];
                    o[prop] = source[prop];
                }
            }

            return o;
        }

        var protoprops = ["toString","valueOf","constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString"];
    }());

        var a = {name:"qix"}, b = {age:12},c = {toString:"这是一个属性"};
        extend(a,b,c);

    </script>
</body>
</html>

这里写图片描述

闭包

这里有篇关于闭包的文章,讲述清晰明了。
http://blog.rainy.im/2015/07/04/scope-chain-and-prototype-chain-in-js/

《hadoop权威指南》学习笔记

第一章  初识hadoop 大量的数据胜于好的算法。 一、数据存储与分析 实现多个磁盘的并行读写,需要解决的问题: 1、硬件故障,一旦使用多个硬件,任一硬件发生故障的概率很高,避免数据丢失的办法就是进...
  • beitiandijun
  • beitiandijun
  • 2013年06月24日 21:59
  • 2373

Hadoop权威指南读书笔记

mapreduce数据本地化(核心特征)、无共享。    1  HDFS的设计 为了存储超大文件 流式访问(一次写入多次读取)商用硬件(不需要超豪华的机器)    2  数据快(block) ...
  • xia_yu_mao_fa
  • xia_yu_mao_fa
  • 2014年05月06日 15:48
  • 2408

hadoop权威指南阅读笔记(一)

第一章 一、对hadoop的诞生的原因: 问题: 硬盘的存储容量在迅速的增加,传输的速度并未有相同幅度的增加, 从驱动器上读取数据需要花费很长的时间 所以为了提高传输速度提出了一种解决方案是...
  • u013793732
  • u013793732
  • 2016年04月03日 12:32
  • 373

hbase权威指南学习笔记

一、简介 1.列式存储数据库 以列为单位聚合数据,然后将列值顺序的存入磁盘,而传统数据库时为行式数据库,连续地存储整行 列式数据库:对于特定的查询,不需要所有的值,在分析型数据库最常见 1)关...
  • lvhuiyin
  • lvhuiyin
  • 2017年08月05日 10:46
  • 750

myeclipse8.6导入jdk1.8的项目后出现的问题

myeclipse8.6导入jdk1.8的项目后出现类似如下的问题 “The type java.lang.CharSequence cannot be resolved. It is indirec...
  • muxiting
  • muxiting
  • 2015年04月10日 14:13
  • 6234

JAVA性能优化权威指南 读书笔记(一)

JAVA性能优化权威指南 读书笔记   最近也算是比较认真的读了一下java性能优化权威指南,期间断断续续持续了大概一个半月,深感自己读书的效率和积极性还是存在问题,总之,在此我还是先记录一下相关的...
  • sunsun314
  • sunsun314
  • 2016年11月27日 21:27
  • 1588

Netty权威指南(笔记一)

第一章(略) 第二章 NIO入门 2.1传统的BIO编程(同步阻塞I/O服务端通信模型【一客户一线程】) 网络编程的基本模型:Client/Server模型,也就是2个进程之间进行相互通信,其中服务端...
  • ClarkKentYang
  • ClarkKentYang
  • 2016年09月13日 21:37
  • 601

WEB性能权威指南学习笔记 Item01

“合格的开发者知道这么做, 而优秀的开发者知道为什么那么做”一. 延迟与带宽分组从信息源发到的地所需的时间逻辑或物理通信路径最大的吞吐量延迟的构成 传播延迟 信号传播距离和速度的函数 =>信号传播...
  • i10630226
  • i10630226
  • 2016年08月19日 23:51
  • 1714

web性能权威指南学习笔记 Item02

HTTP你发展史 http0.9 –>http1.0 –>http1.1 –>http2.0 http请求和http响应 主要步骤包括:➊ 请求 HTML 文件,及其编码、字符集和元数据➋ 对...
  • i10630226
  • i10630226
  • 2016年08月19日 23:54
  • 1463

《HBase权威指南》读书笔记1

1.4 HBase结构1.4.2 HBase 的表、列和单元格基本单位是column多column组成row一个row有唯一rowkey每个column有多个版本,多个版本存储在单元格(cell)中行...
  • nsrainbow
  • nsrainbow
  • 2015年10月14日 17:13
  • 1949
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:《权威指南》笔记 -- 8.5 、8.6
举报原因:
原因补充:

(最多只允许输入30个字)