我已经做了以下示例,并想知道它是否正确地表示了JavaScript中的多态性。
var customShape = function(){
this.sides = 4;
this.length = 5;
this.perimeter = 4 * this.length;
};
customShape.prototype.noOfSides = function(){
return ("Total No of Sides = " + 4);
}
var rect = new customShape();
var square = new customShape();
var triangle = new customShape();
triangle.noOfSides = function(){
return ("Total No of Sides = " + 3);
}
console.log(rect.noOfSides());
console.log(square.noOfSides());
console.log(triangle.noOfSides());我的目的是创建一个函数noOfSides(),它适用于不同的对象。
参考文献:
发布于 2017-12-02 01:38:24
您的代码片段接近于演示多态性,但是对noOfSides()的调用没有一个是多态的。
console.log(rect.noOfSides());
console.log(square.noOfSides());
console.log(triangle.noOfSides());rect只有一个形状,所以rect.noOfSides()总是用四个边调用相同的方法。square和triangle也是如此。
对于多态性,我们需要多形性的东西,给它一个以上的形状,就像一个变量,可以是一个矩形或三角形。
var polylog = function(s) {
console.log(s.noOfSides());
};
polylog(rect);
polylog(square);
polylog(triangle);在polylog中,参数s可以有两种不同的形状;它从4边形状到3边形状的多形性,因此s.noOfSides()可以调用两个不同的函数。这说明了多态。
https://codereview.stackexchange.com/questions/181576
复制相似问题