为什么从构造函数返回时原型未定义?

时间:2014-07-19 16:43:36

标签: javascript function constructor return instance

如果我在构造函数中使用return语句,那么它不是一个实例吗?或者return语句是否使它成为常规函数?

function ClazzA() {};
ClazzA.prototype.go = 1;

function ClazzB() {
    return {};
};

ClazzB.prototype.go = 1;

var a = new ClazzA();
var b = new ClazzB();

console.log(a.go); //1
console.log(a.constructor); //ClazzA()
console.log(a instanceof ClazzA); //true
console.log(b.go); //undefined
console.log(b.constructor); //Object()
console.log(b instanceof ClazzB); //false

1 个答案:

答案 0 :(得分:2)

这就是new运算符在JavaScript中的工作方式。如果构造函数返回一个对象引用,那么这就是new表达式的值。构造函数创建并返回一个空(普通)对象,这就是分配给变量“b”的内容。