在JavaScript中,方法的多态性是指同一个方法名可以根据传入的参数不同而表现出不同的行为。这种灵活性使得JavaScript成为一门非常强大且灵活的编程语言。
首先,我们来看一个简单的例子:
1 2 3 4 5 6 | function add(x, y) { return x + y; } console.log(add(1, 2)); // 输出3 console.log(add( 'Hello' , 'World' )); // 输出HelloWorld |
在上面的代码中,我们定义了一个名为add的方法,它接受两个参数x和y,并返回它们的和。我们可以看到,当传入的参数是数字时,add方法会进行加法运算,而当传入的参数是字符串时,add方法会进行字符串的拼接。
这就是JavaScript中方法的多态性的一个简单示例。
接下来,我们再看一个稍微复杂一些的例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | function Shape() {} Shape.prototype.draw = function () { console.log( 'Drawing a shape...' ); }; function Circle() {} Circle.prototype = new Shape(); Circle.prototype.draw = function () { console.log( 'Drawing a circle...' ); }; function Rectangle() {} Rectangle.prototype = new Shape(); Rectangle.prototype.draw = function () { console.log( 'Drawing a rectangle...' ); }; var shapes = [ new Circle(), new Rectangle()]; shapes.forEach( function (shape) { shape.draw(); }); |
在上面的代码中,我们定义了一个基类Shape和两个子类Circle和Rectangle。每个类都有一个名为draw的方法,但是它们的具体实现是不同的。
我们创建了一个shapes数组,数组中存放了一个Circle实例和一个Rectangle实例。然后我们使用forEach方法遍历数组中的每个元素,并调用draw方法。由于每个元素都是Shape类的实例,但是它们的draw方法又被子类重写了,因此在调用draw方法时,实际上是根据对象的实际类型来决定调用哪个draw方法。
这就是JavaScript中方法的多态性的另一个例子。
本文为翻滚的胖子原创文章,转载无需和我联系,但请注明来自猿教程iskeys.com