JavaScript - 封装

JavaScript - 封装 首页 / JavaScript入门教程 / JavaScript - 封装

JavaScript封装是将数据(即变量)与作用于该数据的函数绑定在一起的过程。它使无涯教程能够控制数据并进行验证。在JavaScript中实现封装:-

  • 使用var关键字将数据成员设为私有。
  • 使用setter方法设置数据并使用getter方法获取数据。

封装可以使用以下属性来处理对象:

读/写    -  在这里,使用setter方法写入数据,而getter方法读取数据。

只读      -  在这种情况下,仅使用getter方法。

仅写      -  在这种情况下,仅使用setter方法。

JavaScript封装范例

看一个简单的封装示例,其中包含两个带有setter和getter方法的数据成员。

<script>
class Student
  {
    constructor()
    {
       var name;
       var marks;
    }
        getName()
        {
          return this.name;
        }
      setName(name)
      {
        this.name=name;
      }
      
      getMarks()
      {
        return this.marks;
      }
    setMarks(marks)
    {
      this.marks=marks;
    }

    }
    var stud=new Student();
     stud.setName("John");
     stud.setMarks(80);
     document.writeln(stud.getName()+" "+stud.getMarks());
</script>

输出:

John 80

示例1

在此示例中,验证学生的分数。

<script>
class Student{
    constructor()
    {
       var name;
       var marks;
    }
    getName()
    {
          return this.name;
    }
    setName(name)
    {
        this.name=name;
     }
      
    getMarks()
    {
        return this.marks;
    }
    setMarks(marks)
    {
        if(marks<0||marks>100)
        {
          alert("Invalid Marks");
        }
      else
        {
          this.marks=marks;
        }
    }
    }
    var stud=new Student();
     stud.setName("John");
     stud.setMarks(110);//alert() invokes
     document.writeln(stud.getName()+" "+stud.getMarks());
</script>

输出:

John undefined

示例2

在这里,无涯教程执行基于原型的封装。

链接:https://www.learnfk.comhttps://www.learnfk.com/javascript/javascript-oops-encapsulation.html

来源:LearnFk无涯教程网

<script>
function Student(name,marks)
{
  var s_name=name;
  var s_marks=marks;
  Object.defineProperty(this,"name",{
    get:function()
    {
      return s_name;
    },
  set:function(s_name)
  {
    this.s_name=s_name;
  }
  
});
 
    Object.defineProperty(this,"marks",{
    get:function()
    {
      return s_marks;
    },
  set:function(s_marks)
  {
    this.s_marks=s_marks;
  }
  
});
  
}
  var stud=new Student("John",80);
  document.writeln(stud.name+" "+stud.marks);
</script>

输出:

John 80

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

重学前端 -〔程劭非(winter)〕

Python核心技术与实战 -〔景霄〕

Java性能调优实战 -〔刘超〕

透视HTTP协议 -〔罗剑锋(Chrono)〕

黄勇的OKR实战笔记 -〔黄勇〕

深入浅出云计算 -〔何恺铎〕

体验设计案例课 -〔炒炒〕

陶辉的网络协议集训班02期 -〔陶辉〕

程序员职业规划手册 -〔雪梅〕

好记忆不如烂笔头。留下您的足迹吧 :)