gpt4 book ai didi

javascript - JavaScript 中的多态性示例使用错误

转载 作者:行者123 更新时间:2023-11-30 15:52:17 24 4
gpt4 key购买 nike

这是一个演示多态性示例的示例,如果我删除以下行:

Employee.prototype= new Person();
Employee.prototype.constructor=Employee;

程序仍然没有任何影响,得到类似的结果。如果是这样,这个例子如何证明多态性?评论这些行,我看到有 2 个函数在调用时根据它们自己的 getInfo 函数返回结果;那么,魔法在哪里呢?

HTML:

<script type="text/javascript">
function Person(age, weight) {
this.age=age;
this.weight=weight;
this.getInfo=function() {
return "I am " + this.age + " years old " +
"and weighs " + this.weight +" kilo.";
}
}
function Employee(age, weight, salary){
this.salary=salary;
this.age=age;
this.weight=weight;
this.getInfo=function() {
return "I am " + this.age + " years old " +
"and weighs " + this.weight +" kilo " +
"and earns " + this.salary + " dollar.";
}
}
Employee.prototype= new Person();
Employee.prototype.constructor=Employee;
// The argument, 'obj', can be of any kind
// which method, getInfo(), to be executed depend on the object
// that 'obj' refer to.
function showInfo(obj) {
document.write(obj.getInfo()+"<br>");
}
var person = new Person(50,90);
var employee = new Employee(43,80,50000);
showInfo(person);
showInfo(employee);
</script>

结果

enter image description here

引用

http://w3processing.com/index.php?subMenuItemId=329

最佳答案

这确实是多态性的一个薄弱示例,除了您注意到的问题(即 Employee.prototype 设置是多余的,示例中从未使用过原型(prototype)函数)之外,这是我看到的其他几个问题:

  1. Employee函数(即构造函数)从不调用“基类”构造函数,即 Person功能 - 考虑到他们处于父子关系中,您会期望这一点到位。
  2. 由于上述问题,Employee函数具有从 Parent 复制粘贴的代码功能:

    this.salary=salary;
    this.age=age;
    this.weight=weight;

  3. 同上 getInfo函数 - 两个构造函数都创建它们的特定函数并将其分配给 this ;和 Employee getInfo 的版本从不调用基类版本——它可能应该调用,以演示继承

    所以,实际上唯一可以支持这个例子的是它使用相同的函数名称,即 getInfoPerson 上和 Employee并使用公共(public)代码在两个对象上调用它们。这可以称为多态性的一个例子,但可能是一个基本的例子

关于javascript - JavaScript 中的多态性示例使用错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39137445/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com