从contrctor创建的对象返回带有构造函数名称的对象,但没有冒号

时间:2016-08-27 20:09:31

标签: javascript

我正在使用构造函数,然后使用从构造中创建的对象,我根据某些条件更改值 - 然后返回它。

但是,当我返回新的Object时,它包含原始构造函数的名称,但没有任何冒号。我无法访问数据。

    function constructorFunction(name, count){
        this.name = name;
        this.count = count;
    }
    
    function conditionalFunction(a, b){
      var conditional = new constructorFunction(a, b);
    
     if (b > 1){
        conditional.count = b * 2;
    }
      return conditional;
    }


(function () {
var neededData = conditionalFunction('bob', 33);

console.log('neededData :', neededData);
})();

返回一个具有原始构造函数名称的对象,但没有半冒号..:

conditionalFunction {name: 'name', count: 2}. 

我希望它只返回JSON对象:{name:name,count:2},但我得到的是返回的conditionalFunction {name:name,count:2}

没有结肠。 conditionalFunction不被识别为属性,因此我无法通过尝试以下方式访问对象中的数据:

neededData.constructorFunction = undefined 

2 个答案:

答案 0 :(得分:0)

  1. neededData是constructorFunction
  2. 的引用对象
  3. constructorFunction不是neededData
  4. 的变量或属性
  5. constructorFunction的属性是name和count
  6. 因此requiredData的属性也是名称和计数
  7. neededData.constructorFunction = undefined

    在这一行中很明显,您正在尝试使用neededData对象访问constructorFunction, 实际上neededData对象具有对constructorFunction的引用,因此您可以使用neededData对象访问constructorFunction的name和count属性,如:

     function constructorFunction(name, count){
            this.name = name;
            this.count = count;
        }
        
        function conditionalFunction(a, b){
          var conditional = new constructorFunction(a, b);
        
         if (b > 1){
            conditional.count = b * 2;
        }
          return conditional;
        }
    
    
    (function () {
    var neededData = conditionalFunction('bob', 33);
    
    console.log('name using neededData object:', neededData.name);
      console.log('count using neededData object:', neededData.count);
    })();

答案 1 :(得分:0)

为什么不将构造函数更改为:

function constructorFunction(name, count){
  return {name:name,count:count};
}