正如您定义的那样,无法限制 javascript 中的公共对象属性可以包含哪些值。
除了属性本身,您还可以使用访问器方法来获取和设置值,并且这些方法只能强制执行某些值。然后,您可以将实际数据存储在闭包内的外部世界无法访问的地方,这样只有访问者才能访问它。如果您想将访问器与私有存储一起使用,请参阅http://javascript.crockford.com/private.html了解实现私有实例变量的方法。
function StudentObject(studentStatus, opleiding) {
// private instance variable, only available to code defined
// in the constructor
var traject = "";
// public methods
this.setTraject = function(val) {
if (val === "MBT" || val === "PBT") {
traject = val;
}
}
this.getTraject = function() {
return traject;
}
this.status = studentStatus;
this.opleiding = opleiding;
}
var studentStatus = {
betaald:true,
inschrijvingOK:true
}
var student = new StudentObject(studentStatus, "Toegepaste Informatica");
student.setTraject("PBT");
alert(student.getTraject()); // "PBT"
student.setTraject("xxx");
alert(student.getTraject()); // "PBT"