gpt4 book ai didi

JavaScript 扩展数组并向子原型(prototype)添加方法?

转载 作者:行者123 更新时间:2023-11-28 20:36:04 25 4
gpt4 key购买 nike

我想创建一个类似于简单音乐播放列表(数组)的js类。我想用 ID 实例化这个播放列表,每个 ID 都是我数据库中的一个轨道 ID。我有这样的界面:

function Playlist() {
Playlist.prototype.current = 0;
Playlist.prototype.prev = function() {
if (this.current-1 < 0) {
return null;
}
return this[--this.current];
};
Playlist.prototype.next = function() {
if (this.current+1 >= this.length) { // length is index + 1
return null;
}
return this[++this.current];
};
Playlist.prototype.seek = function(id) {
for (i in this) {
if (this[i] == id) {
this.current = parseInt(i);
return i;
}
}

return false;
};
Playlist.prototype.getCurrent() {
return this.current;
};
};

上面的代码没有执行我想要的操作,因为我将其想象为定义了方法的,可以像这样实例化:

var newPlaylist = Playlist(2,3,5,10/* those are my ids */);

目前我发现的唯一方法是:

Playlist.prototype = new Array(2, 3, 5, 10/* those are my ids */);

这没有任何意义,因为它可以实例化为不同的对象。任何想法都非常受欢迎!

最佳答案

最好的方法 - 嵌套数组;

function Playlist() {
this.current = 0;
this.list = Array.prototype.slice.call(arguments);;
};

Playlist.prototype.prev = function() {
if (this.current-1 < 0) {
return null;
}
return this.list[--this.current];
};
Playlist.prototype.next = function() {
if (this.current+1 >= this.list.length) { // length is index + 1
return null;
}
return this.list[++this.current];
};
Playlist.prototype.getCurrent = function() {
return this.current;
};

var newPlaylist = new Playlist(2,3,5,10/* those are my ids */);

但是你不能使用list[i]通过索引获取元素,但你只需要在你的类中添加at()方法来提供类似的功能

PlayList.prototype.at(i) {
return this.list[i];
}

关于JavaScript 扩展数组并向子原型(prototype)添加方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15343058/

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