function math() { return 'x' }
math.prototype.sqrt = function(a){return Math.sqrt(a)}
var x = new math();
x.sqrt(9); //gives 3
function math1() { return {} }
math1.prototype.sqrt = function(a){return Math.sqrt(a)}
var y = new math1();
y.sqrt(9); //throws javascript error "TypeError: Object #<Object> has no method 'sqrt'"
答案 0 :(得分:4)
通常,从构造函数返回值无法实现。似乎如果返回一个JavaScript原语(如数字或字符串),则new
(var y = new math1();
)的对象实例化过程将按预期工作,忽略此值。
但是,如果您返回{}
之类的JavaScript对象,则new
的实例化过程似乎无法以相同的方式工作。而是使用返回的对象加载变量y,而不是使用新的math1实例。