zoukankan      html  css  js  c++  java
  • caogao

    https://css-tricks.com/

    在safari浏览器中添加transform规则,如果没有效果,把该规则的原始元素以块状显示

    http://webdesignerwall.com/trends/47-amazing-css3-animation-demos

    http://kb.cnblogs.com/page/48103/

    即使媒体查询返回假,<link>标签上带有媒体查询的样式表仍将被下载(只不过不会被应用)

     

     

     

     

    函数是一些可执行的代码,这些代码在函数被定义后就确定了,不会在执行时发生变化,所以一个函数只有一个实例。闭包在运行时可以有多个实例,不同的引用环境和相同的函数组合可以产生不同的实例

     

    例子1:闭包中局部变量是引用而非拷贝

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    function say667() {

        // Local variable that ends up within closure

        var num = 666;

        var sayAlert = function() { alert(num); }

        num++;

        return sayAlert;

    }

     

    var sayAlert = say667();

    sayAlert()

    因此执行结果应该弹出的667而非666。

     

    例子4:外部函数所有局部变量都在闭包内,即使这个变量声明在内部函数定义之后。

    1

    2

    3

    4

    5

    6

    7

    8

    function sayAlice() {

        var sayAlert = function() { alert(alice); }

        

    // Local variable that ends up within closure

        var alice = 'Hello Alice';

        return sayAlert;

    }

    var helloAlice=sayAlice();

    helloAlice();

    执行结果是弹出”Hello Alice”的窗口。即使局部变量声明在函数sayAlert之后,局部变量仍然可以被访问到。

    例子5:每次函数调用的时候创建一个新的闭包

    function newClosure(someNum,someRef){

    var num=someNum;

    var anArray=[1,2,3];

    var ref=someRef;

    return function(x){

    num+=x;

    anArray.push(num);

    alert('num: '+num+ ' anArray '+ anArray.toString()+ ' ref.someVar '+ref.someVar);

    }

    }

    closure1=newClosure(40,{someVar:'closure 1'});

    closure2=newClosure(1000,{someVar:'closure 2'});

     

    closure1(5);

    closure2(10);

    闭包的应用

    Singleton 单件:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    var singleton = function () {

        var privateVariable;

        function privateFunction(x) {

            ...privateVariable...

        }

     

        return {

            firstMethod: function (a, b) {

                ...privateVariable...

            },

            secondMethod: function (c) {

                ...privateFunction()...

            }

        };

    }();

    这个单件通过闭包来实现。通过闭包完成了私有的成员和方法的封装。匿名主函数返回一个对象。对象包含了两个方法,方法1可以方法私有变量,方法2访问内部私有函数。需要注意的地方是匿名主函数结束的地方的'()’,如果没有这个'()’就不能产生单件。因为匿名函数只能返回了唯一的对象,而且不能被其他地方调用。这个就是利用闭包产生单件的方法

    匿名函数

    1.把函数当成值来使用(一个函数返回另外一个函数并赋值给一个变量,还有函数表达式)

    2.闭包

    3.模仿块级作用域

    (function(){

             //这里是块级作用域

    })();

  • 相关阅读:
    《代码大全2》阅读笔记03
    第一阶段意见评论
    大二下学期学习进度(十一)
    四叶草社交平台——十天冲刺(10)
    四叶草社交平台——十天冲刺(9)
    四叶草社交平台——十天冲刺(8)
    四叶草社交平台——十天冲刺(7)
    四叶草社交平台——十天冲刺(6)
    四叶草社交平台——十天冲刺(5)
    四叶草社交平台——十天冲刺(4)
  • 原文地址:https://www.cnblogs.com/919czzl/p/5007984.html
Copyright © 2011-2022 走看看