《权威指南》笔记 -- 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/

C#学习之路,学习笔记 第八章 8.5this关键字 和 8.6索引

8.5 this关键字 :using System; using System.Collections.Generic; using System.Linq; using System.Text; ...

eclipes,myeclipse 9.0 ,myeclipse 8.5,8.6快捷键

Ctrl+Shift+L    显示所有快捷键  Ctrl+K      参照选中的词(Word)快速定位到下一个  Ctrl+Shift+K    参照选中的词(Word)快速定位到上一个  ...

Ubuntu下MyEclipse 8.5 8.6下载与 安装

============///////////////////////======= Attention! 更改myeclipse-installer的权限:右键->属性->权限 允许以程序...

myeclipse8.6/8.5 集成svn 及优化 注册码

转载自http://5dprince.iteye.com/blog/730666         1.打开HELP->MyEclipse Configuration Ce...

外卖人8.6/8.5/8.4订餐系统源码免费分享【带app】

超级棒的外卖程序,有微信订餐、wap订餐、预定桌位等等多种外卖功能,还有快捷订餐功能也就是代客下单功能!另外本程序支持短信,还支持支付宝支付、支付宝余额支付、微信支付、货到付款、paypal支付,是非...

如何破解myeclipse经典版本8.5,8.6

欢迎使用Markdown编辑器写博客随着java开发在互联网中的广泛应用,如何免费长期使用myeclipse软件开发,今天,小编整理如何破解myeclipse经典版本...

C#—实验8.4、8.5和8.6

/* * 窗口标题为“我的文本框实验”;窗体上一个标签内容为“下面文本框只能输入0至9十种数字,且长度最多8个”; * 文本框中只能输入0至9十种数字,最多只能输入8个字符; * 单击“结束”按...
  • LY_624
  • LY_624
  • 2016年05月22日 15:25
  • 256

分享一个生成myeclipse 8.5/8.6的注册码java破解程序

原文:分享一个生成myeclipse 8.5/8.6的注册码java破解程序 源代码下载地址:http://www.zuidaima.com/share/1833540527213568.h...

Hadoop权威指南读书笔记

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

《IDA Pro权威指南》读书笔记

IDA 6.1 预破解版 种子下载地址 http://thepiratebay.se/torrent/7686769/。 如果不能下了,谷歌搜索 “Hex-Rays Ida Pro Advanced ...
  • hursing
  • hursing
  • 2013年04月03日 10:44
  • 6468
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:《权威指南》笔记 -- 8.5 、8.6
举报原因:
原因补充:

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