这是Javascript原型属性的预期行为吗? 函数数学(){return'x'} math.prototype.sqrt=函数(a){return math.sqrt(a)} var x=新数学(); x、 sqrt(9)//给出3 函数math1(){return{}} math1.prototype.sqrt=函数(a){return Math.sqrt(a)} var y=新数学1(); y、 sqrt(9)//抛出javascript错误“TypeError:Object#没有方法'sqrt'”

这是Javascript原型属性的预期行为吗? 函数数学(){return'x'} math.prototype.sqrt=函数(a){return math.sqrt(a)} var x=新数学(); x、 sqrt(9)//给出3 函数math1(){return{}} math1.prototype.sqrt=函数(a){return Math.sqrt(a)} var y=新数学1(); y、 sqrt(9)//抛出javascript错误“TypeError:Object#没有方法'sqrt'”,javascript,functional-programming,Javascript,Functional Programming,通常,从构造函数返回值不会产生任何效果。似乎如果返回一个JavaScript原语(如数字或字符串),则带有new(var y=new math1();)的对象实例化过程将按预期工作,忽略此值 然而,如果您返回一个JavaScript对象,例如{},那么使用new的实例化过程似乎不会以相同的方式工作。相反,您的变量y加载了返回的对象,而不是math1的新实例。问得好。我今天学到了一些东西。 function math() { return 'x' } math.prototype.sqrt =

通常,从构造函数返回值不会产生任何效果。似乎如果返回一个JavaScript原语(如数字或字符串),则带有
new
var y=new math1();
)的对象实例化过程将按预期工作,忽略此值


然而,如果您返回一个JavaScript对象,例如
{}
,那么使用
new
的实例化过程似乎不会以相同的方式工作。相反,您的变量y加载了返回的对象,而不是math1的新实例。

问得好。我今天学到了一些东西。
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'"