gpt4 book ai didi

Javascript:如何正确扩展类

转载 作者:数据小太阳 更新时间:2023-10-29 04:12:47 24 4
gpt4 key购买 nike

通过互联网搜索我总是碰到这种 Javascript 类扩展的方法

function extend(Child, Parent) {
var F = function() { }
F.prototype = Parent.prototype
Child.prototype = new F()
Child.prototype.constructor = Child
Child.superclass = Parent.prototype
}

但这和这个有什么不同呢?

  function extend(Child, Parent) {
var p = new Parent()
Child.prototype = p
Child.prototype.constructor = Child
Child.superclass = p
}

最后一个也很完美。那我为什么要使用这个额外的 var F = function() { } 移动呢?

最佳答案

直接调用原始构造函数可能会产生不良副作用,例如,如果未传递某些预期参数,则无法正常工作。

这就是他们使用“代理”函数的原因,它可以让您获得一个继承自 Parent() 的新对象,而无需实际调用 Parent()


这是一个简单的例子:

function Person(name, age) {
if (name === undefined)
throw "A name is required";
this.name = name + "";
this.age = age;
}

如果 Person 是父级,它会抛出错误,因为没有传递 name

关于Javascript:如何正确扩展类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20554906/

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