javascript - 如何仅传入属性来实例化 JavaScript 对象?

标签 javascript oop

我试图拥有一个接受这样的字段的对象:

var User = function(params) {
    if(params){
        this.id = params.id;
        this.name = params.name;
        ..
    }
}
  • 如果是模型中字段的属性,则会设置它们
  • 如果它与模型不匹配,则不会包含在模型中
  • 如果该属性不存在,则不会设置它

所以如果你这样做:

var data = {
    id: 123,
    foo: 'bar'
};

var user = new User(data);

JSON.stringify(user); // { id: 123 }

最简单的方法是什么?我只能想到为每个属性做一个条件。

最佳答案

function (params) {
    var properties = ['id', 'name', ..];
    for (var i = 0, length = properties.length; i < length; i++) {
        var property = properties[i];
        if (params[property]) {
            this[property] = params[property];
        }
    }
}

关于javascript - 如何仅传入属性来实例化 JavaScript 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30581070/

相关文章:

javascript - 为什么要使用导出和导入?

validation - 验证逻辑应该在哪里实现?

javascript - Pug:使用 pug/jade 在每个循环中调用函数

oop - 获取 ABAP 对象的标识号

java - 具有 set 方法的实例字段的访问修饰符的必要性

c++ - 引用其他对象作为引用类字段

javascript - 如何使用带有 react-native-vector-icons 的 Material 社区图标

javascript - 如何一个一个地删除文本框中的字符?

javascript - Vuex 状态变化传播

javascript - 使用easyrtc的房间占用监听器,如何在用户列表更新后立即调用其他用户?