我想要一个“ for”或“ while”循环来循环访问原型/“类”中的所有实例/对象。 就像数组中的“ hasNext()”。
然后我想实现一个功能。例如alertname(“ obj”)这将返回obj的名称。问题是我不知道特定的obj。该函数只获取一个字符串,然后它将在原型中搜索哪个是正确的。
function Product(id, name) {
this.id = id;
this.name = name;
}
Product.prototype.getid = function() {
i = this.id;
return i;
};
Product.prototype.getname = function() {
i = this.name;
return i;
};
balloon = new Product(0, "Balloon");
var text = "balloon";
//doesnt work
function getname(obj) {
i = Product.prototype.getname(obj);
window.alert(i);
}
getname(text);
答案 0 :(得分:1)
您似乎想跟踪使用new Product
创建的所有对象。这是您需要自己实现的东西。
只需创建一个数组:
const stock = [];
stock.push(new Product(0, "Balloon"));
// ...
stock.push(new Product(0, "Monopoly"));
然后您可以简单地对其进行迭代:
for (const product of stock) {
console.log(product.getname());
}
有一个很好的理由,就是JS没有为您提供现成的数组:如果这样做了,那么创建的任何对象都不会被垃圾回收;它们将始终被视为您仍然需要使用的东西。因此,没有内置机制是一件好事。
Product.prototype.getname(obj);
这没有道理:getname
不带参数。通常,您会像方法那样调用原型函数:
obj.getname()
在某些情况下,您可能想使用Product.prototype.getname
,但这仅在obj
不是Product
的实例,而是非常相似以至于可以调用{ {1}}。在这种情况下,请使用getname
:
.call()