Javascript 当使用使用对象的prototype属性和new关键字定义的方法时,会发生什么区别
我的代码在使用第一个案例时有效。然后我想知道第二个案例。单击按钮时,此.x和此.y值是否Javascript 当使用使用对象的prototype属性和new关键字定义的方法时,会发生什么区别,javascript,Javascript,我的代码在使用第一个案例时有效。然后我想知道第二个案例。单击按钮时,此.x和此.y值是否未定义 我的html代码: <!DOCTYPE html> <html> <head> <script type="text/javascript" src="ObjectKavrami.js"> </script> <title></title> </head> <body> <butt
未定义
我的html代码:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="ObjectKavrami.js">
</script>
<title></title>
</head>
<body>
<button id="demoObjectPrototype" onclick="onObjectWithPrototype()">JavaScript Object</button>
</body>
</html>
案例2:返回NaN
var areaCalc = function(x,y) {
this.x = x ;
this.y = y ;
}
areaCalc .prototype = {
area: function() { return (this.x * this.y); }
}
//var newarea = new areaCalc (5,23);
function onObjectWithPrototype () {
areaCalc(2,3);
alert(areaCalc.prototype.area());
//alert(newarea .area());
}
为什么该方法看不到x和y值?此行为背后的主要原因是new关键字将原型对象与变量绑定。因此,在第一种情况下,当您使用area=new areaCalc(5,23)时,原型对象在new关键字的帮助下绑定,因此当在原型对象内使用此关键字时,它将与调用它的对象关联。
但在第二种情况下,原型对象与任何对象都没有关联。这就是它做出这种行为的原因 主要是因为
这个在区域()内将是原型对象,因为这个总是出现在最后一个之前。第二,因为这根本不是它应该被使用的方式。我想知道为什么ı需要新的对象?对于这一点,请使用第二种情况。İf area是areaCalc的一个属性,为什么我看不到x和y值不确定您是否只是以误导的方式解释了它,但是原型对象并没有与创建的对象“绑定”…
var areaCalc = function(x,y) {
this.x = x ;
this.y = y ;
}
areaCalc .prototype = {
area: function() { return (this.x * this.y); }
}
//var newarea = new areaCalc (5,23);
function onObjectWithPrototype () {
areaCalc(2,3);
alert(areaCalc.prototype.area());
//alert(newarea .area());
}