闭包的一些例子

Posted 以后文章更新在https://ybleeho.github.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了闭包的一些例子相关的知识,希望对你有一定的参考价值。

1.闭包允许将函数与其所操作的某些数据(环境)关连起来。这显然类似于面向对象编程。在面向对象编程中,对象允许我们将某些数据(对象的属性)与一个或者多个方法相关联。

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <style type="text/css">
        body{
            font-size: 12px;
        }
        h1{
            font-size: 1.5em;
        }
        h2{
            font-size: 1.2em;
        }
    </style>
    <script type="text/javascript">

        window.onload=function(){
        function makeSizer(size){
            return function(){
                document.body.style.fontSize=size+px;
            };
        }
        var size12=makeSizer(12);
        var size14=makeSizer(14);
        var size16=makeSizer(16);
        document.getElementById(size-12).onclick=size12;
        document.getElementById(size-14).onclick=size14;
        document.getElementById(size-16).onclick=size16;
    }
    </script>
</head>
<body>
    <p>test</p>
    <h1>i love you</h1>
    <h2>i hate you</h2>
    <a href="#" id="size-12">12</a>
    <a href="#" id="size-14">14</a>
    <a href="#" id="size-16">16</a>
</body>
</html>

2.使用闭包模拟私有方法

var makeCounter=function(){
    var privateCounter=0;
    function changeBy(val){
        privateCounter+=val;
    }
    return {
        increment: function(){
            changeBy(1);
        },
        decrement: function(){
            changeBy(-1);
        },
        value: function(){
            return privateCounter;
        }
    }
};
var Counter1=makeCounter();
Counter1.increment();
console.log(Counter1.value());
Counter1.decrement();
console.log(Counter1.value());
Counter1.increment();
console.log(Counter1.value());

 

以上是关于闭包的一些例子的主要内容,如果未能解决你的问题,请参考以下文章

scala编程——函数和闭包

golang goroutine例子[golang并发代码片段]

20170815 前端开发日报

10 个你可能还不知道 VS Code 使用技巧

分享几个实用的代码片段(附代码例子)

分享几个实用的代码片段(附代码例子)