JavaScript 对象.将可能的条目限制为两个
javascript object.. Limit possible entries to two?
在类中,我需要做一些JavaScript。我有一个任务,要制作一个小脚本,在那里我制作一个对象。我现在的问题是我需要限制对象的属性的可能值。这是我的代码:
var StudentObject = new Object();
var StudentStatus = new Object();
StudentStatus ={
betaald:true,
inschrijvingOK:true
}
StudentObject = {
status: StudentStatus,
traject: "",
opleiding:"Toegepaste Informatica"
}
在对象"StudentObject"中,您会看到一个属性"traject"。这应该只能包含"MBT"或"PBT"。有没有简单的方法?
提前谢谢。
无法
限制 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"
你也许可以做到:
traject:function(x){(x=='MBT'||x=='PBT')?return x:return null;}
没有简单的方法可以做到这一点:(
您可能需要检查设置和新增功能和Object.defineProperty
法典:
function StudentObject() {
var _traject = undefined;
Object.defineProperties(this, {
traject: {
enumerable: true,
configurable: true,
get: function () {
return _traject;
},
set: function (value) {
if ((typeof (value) === "string") && (value.indexOf("MBT") >= 0 || value.indexOf("PBT") >= 0)) {
_traject = value;
}
}
}
});
}
var s = new StudentObject();
s.traject = "foobar"; // won't set traject to foobar
console.log(s.traject); // undefined
s.traject = "someTextContainsMBT"; // will set traject
console.log(s.traject); // someTextContainsMBT
相关文章:
- 正在更新mongod中两个对象内部的数组
- 添加两个对象以获取值的总和
- 如何使用javascript合并两个对象数组
- 在JavaScript中相等两个对象.在更改一时,秒会自动更改
- 如何使用AngularJs比较两个对象的JSON
- 如何在javascript中合并两个对象数组
- JavaScript - 合并两个对象数组并根据属性值删除重复数据
- Javascript如何确定两个对象是否相同
- 比较两个对象数组
- Javascript tests - 如何比较 Jasmine 中的两个对象
- JavaScript:为什么 array.push() 附加两个对象而不是一个对象
- 两个对象相等,但 js 确实说假
- 两个对象之间的Javascript原型
- 使用angularjs或javascript的两个对象数组的交集
- 合并两个对象而不覆盖
- 如何获取具有相同值的两个对象,并将其视为一个对象
- 比较两个对象数组中的重复对象,并在其'这在JavaScript中不是重复的
- 比较underscorejs中的两个对象数组
- 查找/合并具有共同属性的两个对象
- 有没有一个lodash函数可以合并两个对象并删除其中一个对象的属性(如果它们没有)'不存在于另一个中