是因为你已经用Polygon.call(this,3),调用了Polygon方法.它成了Triangle函数的一个变量,在这个函数内有效.所以去掉语句A没什么问题,再说你语句A写的有问题.
你把Polygon()附加给Triangle的什么? 你没有指明...
你应该把Polygon()附加到Triangle的一个属性.如Triangle.prototype.polygon=Polygon;
然后在生明Triangle后调用这个方法属性.
你把Polygon()附加给Triangle的什么? 你没有指明...
你应该把Polygon()附加到Triangle的一个属性.如Triangle.prototype.polygon=Polygon;
然后在生明Triangle后调用这个方法属性.
解决方案 »
- 简单效果如何在firefox下通过
- 好难理解啊.请高手说说怎么回事.闭包的问题
- 求教Input框中获取的时间与当前时间比较问题!
- $$$$$枯井 VS $$$$$非哥
- 请问jsdom为什么无法解析属性值中有小于号的xml
- ! rollover={init:... end:...} 是函数的特殊写法吗?
- 帮忙把下列代码转到netcapor下?
- 大家看看这个效果...不知道有那位大虾能一同研究一下VML
- 我从www.51js.com上弄下来的,经典,大家看看。没分加的。
- 定义inserBefore后出现Cannot read property 'parentNode' of null错误
- 阿里巴巴的Js添加Cookies,搞不定了!
- 没分了,谁帮我调式一下,我想用JS得到2个表格。感谢
function Polygon(sides) //多边形
{
this.sides = sides;
if(typeof Polygon._initialized == "undefined"){
Polygon.prototype.getArea = function(){
return 0;
};
Polygon._initialized = "true";
}
}
function Triangle(base,height) ///三角形
{
//Polygon.call(this,3);
this.base = base;
this.height= height;
Triangle.prototype.pg=Polygon
if(typeof Triangle._initialized == "undefined"){
Triangle.prototype.getArea = function(){
return 0.5*this.base*this.height;}
};
Triangle._initialized = "true";
alert("1");
}
var d = new Triangle("5","2");
d.pg(3)
alert("sides="+d.sides)
alert(d.getArea())
alert("2");
</script>
语句A:我看书上这样写的--Triangle.prototype = new Polygon();////语句A
书上说是为了把Polygon的prototype赋给Triangle的prototype,就是Polygon里的sides属性.给
Triangle里面的sides,这样Triangle里面也会有sides属性.还有就是书上说我的那个例子,你建立一个Triangle对象调用会有问题,
但是你建立1个以上,除了第一个对象不能用,其他的getArea方法就可以用.
比如:
.....
var d = new Triangle("5","2");
var d2 = new Triangle("5","2");
alert("sides="+d.sides)
alert(d2.getArea()) ///这时 这个对象的方法就可以用
<script>
function Polygon(sides) //多边形
{
this.sides = sides;
if(typeof Polygon._initialized == "undefined")
{
Polygon.prototype.getArea = function(){
return 0;
};
Polygon._initialized = "true";
}
}
function Triangle(base,height) ///三角形
{
Polygon.call(this,3);
this.base = base;
this.height= height;
if(typeof Triangle._initialized == "undefined")
{
Triangle.prototype.prototype = Polygon.prototype;
Triangle.prototype.getArea = function(){
return 0.5*this.base*this.height;
};
Triangle._initialized = "true";
}
alert("1");
}
var d = new Triangle("5","2");
alert("sides="+d.sides)
alert(d.getArea())
alert("2");
</script>