gpt4 book ai didi

javascript - 无法将值更新到构造函数生成的模型中

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

我试图通过以下示例来理解 OOP。你能解释一下我做错了什么吗?为什么?

var shoppingcartModel = function() {
var _Cart = function() {
return {
totalPrice: {},
products: []
};
}

return {
cart: _Cart,

addProducts: function(product) {
return _Cart().products.push(product);
}
};
};

var shoppingCart = shoppingcartModel()

console.log(shoppingCart.cart())

shoppingCart.addProducts('product1')
shoppingCart.addProducts('product2')

console.log(shoppingCart.cart())

最佳答案

_Cart 是一个返回对象的函数,而不是对象本身。每当您调用 Cart_() 时,包括在 addProducts 中,您都会创建一个新对象,因此无论您向旧对象之一推送什么都会被忽略,因为没有对旧对象的引用仍然存在。

尝试这样的事情:

var shoppingcartModel = function() {
const cart = {
totalPrice: {},
products: []
};
return {
cart,
addProducts: function(product) {
return cart.products.push(product);
}
};
};

var shoppingCart = shoppingcartModel()

console.log(shoppingCart.cart)

shoppingCart.addProducts('product1')
shoppingCart.addProducts('product2')

console.log(shoppingCart.cart)

关于javascript - 无法将值更新到构造函数生成的模型中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50614939/

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