个性化阅读
专注于IT技术分析

JavaScript的OOPS封装

中的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

JavaScript的封装实施例:验证

在这个例子中,我们验证了学生的痕迹。

<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

JavaScript的封装实施例:基于原型的方法

在这里,我们执行基于原型的封装。

<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
赞(0)
未经允许不得转载:srcmini » JavaScript的OOPS封装

评论 抢沙发

评论前必须登录!