Javascript - 创建新对象,但不传递任何参数

时间:2016-08-11 15:47:09

标签: javascript object

Javascript新手。尝试创建一个数据类型(假设OBJECT就是我想要的)定义,可以在各种函数之间使用。到目前为止,定义只是变量(没有函数等)。我遇到的问题是我想最初创建它,然后设置属性......

我想要做的......有一个定义。

// Object Definition
function resultObj = {
    isValid: true,
    nn_name: '',
    account_name: '',
    translated_name: '',
    address1: '',
    city: '',
    state: '',
    zip: '',
    country: '',
    formattedAddress : '',
    auth_string: '',
    error_text: '',
    error_body: '',
    error_type: ''    
};

在某些时候,我会创建该定义的出现。

myData = new resultObj;
... do some processing here...
... set a FEW of the variables
myData.zip = '12345';

如何创建它以便我不必在创建时传入所有值(或空参数)?

3 个答案:

答案 0 :(得分:3)

如何创建原始默认/初始对象,然后每当必须创建具有相同初始属性的另一个新/独立对象时,您只需将该旧对象复制到新对象中?

var myData = Object.assign({}, resultObj); 

您可以使用Object.assign创建完整的副本。

  

Object.assign()方法用于复制all的值   枚举从一个或多个源对象到目标的自有属性   宾语。它将返回目标对象。

var resultObj = {
    isValid: true,
    nn_name: '',
    account_name: '',
    translated_name: '',
    address1: '',
    city: '',
    state: '',
    zip: '',
    country: '',
    formattedAddress : '',
    auth_string: '',
    error_text: '',
    error_body: '',
    error_type: ''    
};

var myData = Object.assign({}, resultObj);
document.write(JSON.stringify(myData));  

另见:How do I correctly clone a JavaScript object?

答案 1 :(得分:0)

没有必要在对象上定义所有潜在属性:

function resultObj(){}
var result = new resultObj()
result.zip = 12345
console.log(result.zip) //=> 12345

答案 2 :(得分:0)

您可以使用以下内容:

var getResultObj = function(param1, param2) {
    var one = param2 ? param2 : '';
    var two = param2 ? param2 : '';

    var objectToBeReturned = {
        isValid: true,
        nn_name: one,
        account_name: two,
        translated_name: '',
        address1: '',
        city: '',
        state: '',
        zip: '',
        country: '',
        formattedAddress : '',
        auth_string: '',
        error_text: '',
        error_body: '',
        error_type: ''
      };

      return getResultObj;
};

每次调用getResultObj();时,都会返回对象的新实例。 但您也可以使用任何其他Constructor Pattern模式。