美文网首页
08.封装性

08.封装性

作者: Fl_来看看 | 来源:发表于2019-06-06 12:33 被阅读0次

1.局部变量和局部函数

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

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

  • 默认情况下对象中的属性和方法都是公有的, 只要拿到对象就能操作对象的属性和方法
  • 外界不能直接访问的变量和函数就是私有变量和私有函数
  • 构造函数的本质也是一个函数, 所以也会开启一个新的作用域, 所以在构造函数中定义的变量和函数就是私有和函数
  • 由于私有属性的本质就是一个局部变量, 并不是真正的属性, 所以如果通过 对象.xxx的方式是找不到私有属性的, 所以会给当前对象新增一个不存在的属性
    3.什么是封装?
  • 封装性就是隐藏实现细节,仅对外公开接口,也便于对属性和方法进行管理。

4.为什么要封装?

  • 4.1不封装的缺点:当一个类把自己的成员变量暴露给外部的时候,那么该类就失去对属性的管理权,别人可以任意的修改你的属性
  • 4.2封装就是将数据隐藏起来,只能用此类的方法才可以读取或者设置数据,不可被外部任意修改. 封装是面向对象设计本质(将变化隔离)。这样降低了数据被误用的可能 (提高安全性和灵活性)
   function Person() {
            this.name = "lnj";
            // this.age = 34;
            let age = 34;//实例的对象没有这个属性的
            this.setAge = function (myAge) {
                if(myAge >= 0){//好处:可以判断
                    age = myAge;
                }
            }
            this.getAge = function () {
                return age;
            }
            this.say = function () {
                console.log("hello world");
            }

            // 由于构造函数也是一个函数, 所以也会开启一个新的作用域
            // 所以在构造函数中通过var/let定义的变量也是局部变量
            // 所以在构造函数中定义的函数也是局部函数
            var num = 123;
            let value = 456;
            function test() {
                console.log("test");
            }
        
        }
        let obj = new Person();
        // 结论: 默认情况下对象的属性和方法都是公开的, 
        //只要拿到对象就可以操作对象的属性和方法
        // console.log(obj.name);
        // obj.age = -3;
        // console.log(obj.age);
        // obj.say();

        // console.log(age);
        obj.setAge(-3);
        console.log(obj.getAge());

一些说明

  • let age = 34 实例的对象没有这个属性的,因为通过构造函数生成的对象,在内部会隐式var obj=new Object(),然后var this=obj,接着将所有构造函数的参数赋值给this.xx,不会将以let age定义的变量赋值给对象,就是说不会执行this.age=age,所以,实例的对象没有这个属性的。
  • 通过封装性,只有通过对象的方法才能对属性进行修改,不能直接对属性进行修改了,而且在方法里面还能进一步对传进的参数进行判断。

相关文章

  • 08.封装性

    1.局部变量和局部函数 无论是ES6之前还是ES6, 只要定义一个函数就会开启一个新的作用域 只要在这个新的作用域...

  • PHP类的封装性、继承性和多态性

    一、类的封装性 1、什么是类的封装性 1)类的三大特性:封装性、继承性、多态性;2)封装性:将敏感的数据保护起来,...

  • Java面向对象-封装性

    一、Java封装性的使用 封装性的产生目的:保护某些属性和方法不被外部所看见。封装性的实现:为属性和方法进行封装是...

  • 封装性

  • 面向对象的基本概念

    一基本特征 面向对象的基本特征有三个:封装性,继承性,多态性 封装性 封装是一种信息隐藏技术,封装使数据和加工数...

  • JavaScript面向对象的三大特性-来自于三人行慕课

    原文链接:https://www.3mooc.com/front/articleinfo/133 封装性: 封装性...

  • OC语言之封装,继承,多态

    1.面向对象三大特性 -封装性 -继承性 -多态性 2.什么是封装 封装性就是隐藏实现细节,仅对外公开接口。 3....

  • Objective-C基础学习之面向对象三大特性-封装

    1.面向对象三大特性 封装性 继承性 多态性 2.什么是封装 封装性就是隐藏实现细节,仅对外公开接口。 3.为什么...

  • 2018-11-25

    JAVA的封装性、继承性、多态性 ——封装 封装性就是把类(对象)的属性和行为结合成一个独立的相同单位,并尽可能隐...

  • 封装

    1.面向对象三大特性 封装性继承性多态性 2.什么是封装 封装性就是隐藏实现细节,仅对外公开接口。 3.为什么要进...

网友评论

      本文标题:08.封装性

      本文链接:https://www.haomeiwen.com/subject/zfgexctx.html