我正在使用构造函数,然后使用从构造中创建的对象,我根据某些条件更改值 - 然后返回它。
但是,当我返回新的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
答案 0 :(得分:0)
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};
}