gpt4 book ai didi

javascript - ES5 Javascript封装对象自增id

转载 作者:行者123 更新时间:2023-11-30 08:23:05 25 4
gpt4 key购买 nike

出于教学兴趣,我想知道一种在对象创建时模拟自动增量变量的正确方法。

我把你放在我有一个封装的产品“”“类”“””作为具有隐藏属性的对象的场景中。

(function() {

var Product = (function() {
function Product(name, description) {

this.getName = function() {
return name;
};
this.getDescription = function() {
return description;
};
this.getProductId = function() {
return productId;
}
}
return Product;
}());

var p = new Product("Product1", "Should have id=1");
var q = new Product("Product2", "Should have id=2");
console.log(p);
console.log(q);
})();

在这段代码中,如何或什么是添加计数器的最佳方式,以便每次我创建 Product 的新实例时,productId 都将具有连续的值,并且每个对象都保留自己的值。同时,上述 Id 只能通过方法 getProductId() 访问。

提前致谢。

最佳答案

您可以使用 Closures :

(function() {

var Product = (function() {
var nextId = 1;

function Product(name, description) {
var productId = nextId;
nextId += 1;
this.getName = function() {
return name;
};
this.getDescription = function() {
return description;
};
this.getProductId = function() {
return productId;
}
}
return Product;
}());

var p = new Product("Product1", "Should have id=1");
var q = new Product("Product2", "Should have id=2");
console.log(p.getProductId());
console.log(q.getProductId());
})();

如果将一个函数包装在另一个函数中,则内部函数可以访问外部函数的所有变量。当您创建一个新的 Product 时,将调用 function Product(name, description);每次递增 nextId 1。如果你想看到更多关于闭包的例子,你可以看看 this stackoverflow answer .

关于javascript - ES5 Javascript封装对象自增id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50223951/

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