JavaScript 使用闭包实现数据隐私保护

JavaScript 使用闭包实现数据隐私保护

首先我们要了解Javascript中什么是闭包。

闭包: 一个函数和对外部环境的引用一起形成一个闭包。换句话说,我们可以说它是函数和它的词法作用域的组合,这意味着内部函数可以访问它的外部词法环境,即可以访问父函数的变量,这一起形成一个闭包。

示例:

JavaScript

<script> 
function x() { 
    var a = "GeeksforGeeks"; 
    function y() { 
        console.log(a); 
    } 
    return y; 
} 
x()(); 
</script>

输出:

JavaScript 使用闭包实现数据隐私保护

在讨论数据隐私之前,我们先了解封装和数据隐藏。

数据隐藏 类似于一个变量,我们想要对其进行隐私保护,以便其他函数或代码的其他部分不能访问它,这被称为数据隐藏或数据隐私。换句话说,我们只是将数据封装起来,以防止代码的其他部分访问它。

通过一个示例来理解: 在这里,我们有一个计数器变量,我们可以从代码的任何地方访问它,包括增加函数的外部。

Javascript

<script> 
    var counter = 0; 
  
    function increase() { 
        counter++; 
        console.log("Access of counter from inside "
            + "the function as it forms a closure",  
            counter); 
    } 
  
    increase(); 
      
    // No data Privacy 
    console.log("Accessed from outside also no "
        + "data privacy", counter); 
</script>

输出:

JavaScript 使用闭包实现数据隐私保护

所以在上述部分,我们可以看到数据没有隐藏或没有数据隐私。

现在让我们应用闭包的概念。我们将用一个函数来包裹 增加函数 ,这样增加函数就只能访问它的词法环境。

Javascript

<script> 
    function count() { 
        var counter = 0; 
        function increase() { 
            counter++; 
            console.log("Access of counter from "
                + "inside the function as it forms"
                + " a closure", counter); 
        } 
        return increase; 
    } 
  
    count()(); 
      
    // Data Privacy is there is 
    // it will throw error 
    console.log("Accessed from outside also no"
        + " data privacy", counter); 
</script>

输出:

JavaScript 使用闭包实现数据隐私保护

在将增加函数封装在另一个函数下之后,我们可以保持数据的隐私,并且无法在函数外部调用counter。这一切都是由于闭包。闭包通过限制在增加函数的词法环境内访问counter起到了主要作用。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程