JavaScript-封装性

局部变量和局部函数

  • 无论是 ES6 之前还是 ES6,只要定义一个函数就会开启一个新的作用域
  • 只要在这个新的作用域中,通过 let/var 定义的变量就是 局部变量
  • 只要在这个新的作用域中,定义的函数就是局部函数

什么是对象的私有变量和函数

  • 默认情况下对象中的属性和方法都是公有的,只要拿到对象就能操作对象的属性和方法
  • 外界不能直接访问的变量和函数就是私有变量和私有函数
  • 构造函数的本质也是一个函数,所以也会开启一个新的作用域,所以在构造函数中定义的变量和函数就是私有变量和私有函数

什么是封装

  • 封装性就是隐藏实现细节,仅对外公开接口

为什么要封装

  1. 不封装的缺点,当一个类把自己的成员变量暴露给外部的时候,那么该类就失去对属性的管理权,别人可以任意的修改你的属性
  2. 封装就是将数据隐藏起来,只能用此类的方法才可以读取或者设置数据,不可被外部任意修改,封装是面向对象设计本质(将变化隔离)这样降低了数据被误用的可能(提高安全性和灵活性)

那么本文就不举反例,直接上正例,代码如下所示,想年龄这种变量是不可能存在负数的,所以可以使用封装来进行限制和过滤如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>JavaScript-封装性</title>
    <script>
        function Person() {
            this.name = "BNTang";
            let age = 34;
            this.setAge = function (myAge) {
                if (myAge >= 0) {
                    age = myAge;
                }
            }
            this.getAge = function () {
                return age;
            }
            this.say = function () {
                console.log("hello world");
            }
        }

        let obj = new Person();

        obj.setAge(-3);
        console.log(obj.getAge());
    </script>
</head>
<body>
</body>
</html>

image-20210904212654315

posted @ 2021-09-04 21:27  BNTang  阅读(76)  评论(0编辑  收藏  举报