gpt4 book ai didi

javascript - 使用函数继承扩展数组的对象

转载 作者:行者123 更新时间:2023-12-03 10:56:06 24 4
gpt4 key购买 nike

使用functional inheritance我们可以通过将对象作为分配给 this 的函数调用的上下文传递来扩展对象。

这似乎并不像我对 Array 构造函数所期望的那样工作。

var ctx = {
foo: "foo"
};

Array.call(ctx);

ctx -> 对象(foo: "foo")

相反,这确实适用于其他构造函数查找函数。

var fakeArrayConstructor = function () {
this.length = 5;
}

fakeArrayConstructor.call(ctx);

ctx -> 对象 {foo: "foo", length: 5}

Array 构造函数是否未使用 this 分配其某些属性,还是还有其他情况发生?我知道许多与数组相关的功能都存储在 Array.prototype 中,但这不是我本次练习的重点。

最佳答案

链接文章中的功能继承未使用call

如有错误,请指正。 Array 函数恰好有一个特殊的实现,但这与这个问题是正交的。为了使函数式继承发挥作用,需要编写构造函数来支持它。

您的 Array.call 方法有时用于模拟继承,但这种方法需要直接从构造函数内部将方法分配给实例,这可能是异常(exception),而不是规则大多数情况。

关于javascript - 使用函数继承扩展数组的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28262971/

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