新Javascript对象的可选初始化属性
optional initialisation properties for new Javascript object
这是制作一个具有默认属性(即使这里有些属性为null)的javascript类的正确方法吗?同时还具有选项来添加一个创建参数,该参数可以包含以对象格式/json列出的某些属性的特定值?
如果我正在创建许多Person对象,我是否应该将这些内容放入Person的原型中以节省内存?
这对我有用,但我想知道这是否是一个好方法?
// PERSON Class -----------------------------------------------
QM.Person=function(data)
{
/* Closure for this */
var my = this;
this.PersonID=null;
this.Name_Last="";
this.Name_First="";
this.Date_Birth=null;
this.Biography="";
this.loadData=function(obj) {
for (var i in obj) {
if (my.hasOwnProperty(i)) {
my[i] = obj[i];
}
}
}
this.loadData(data);
}
使用此类创建的示例:
jondoe = new Person();
bob = new Person({Name_First:"Bob",Name_Last:"Bar"});
jondoe.Name_First /* "" */
bob.Name_First /* "Bob" */
为了避免重复,您可以构建一个您期望的密钥列表,以及如果没有指定要插入的默认值:
MyType = function(data){
var keys = this.keys,
data = data || {},
key
for (key in keys) {
if (keys.hasOwnProperty(key)) {
if (data.hasOwnProperty(key)) {
this[key] = data[key];
} else {
this[key] = keys[key];
}
}
}
};
MyType.prototype.keys = {
personId: null,
firstName: 'A default first name',
lastName: ''
};
var o1 = new MyType();
var o2 = new MyType({
personId: 1,
firstName: 'Override'
});
console.log(o1, o2);
我不会那样做。我会做
QM.Person=function(data)
{
data = data || {};
this.PersonID= data.PersonId || null;
this.Name_Last= data.Name_Last || "";
...
}
你会注意到,我假设你关心显式类型,即当你分配null
时,你想要的是null
,而不是undefined
。""
也是如此。
我认为这比创建一个函数并执行它来清理你的数据更简单
最后,您想要添加到函数中的所有方法都应该在原型上。属性应该NOT在原型上,除非您希望所有实例共享相同的属性。由于除了数据清理器之外没有其他方法,所以您所展示的任何东西都不应该出现在原型上。
相关文章:
- ng重复中的ng模型-初始化唯一作用域属性
- 每次属性更改时,角度控制器都会初始化
- 为什么我总是得到属性或字段尚未初始化
- 在初始化Javascript时执行的私有函数中设置公共属性
- 新Javascript对象的可选初始化属性
- 在object.defineProperty之前在对象初始化中设置属性
- 想要初始化“;min”;输入类型的属性=“;日期“;在HTML5中,具有特定日期格式的日期值
- 初始化可从元素属性值观察到的Knockout
- 在使用函数作为构造函数时,我在初始化属性时卡住了这个运算符.我的代码如下
- 如何在使用 AngularJS ng-repeat 时初始化本地范围内的属性
- Javascript 对象属性初始化
- 初始化时主干不休息属性值
- Javascript:按属性初始化对象
- Vue.js从 html 初始化对象属性
- 使用同一对象的其他属性初始化对象属性
- 余烬未正确初始化存储:无法读取未定义的属性“查找”
- 在 Backbone 中将函数设置为属性.js给了我一个错误,但如果我在初始化方法中设置它,它会起作用
- 获得'未定义'在原型的构造函数中初始化属性时
- 如何在Javascript构造函数中初始化属性
- 在Javascript中第一次访问时初始化属性