En el proyecto anterior, necesitaba una función de comprar productos de datos y pagarlos. Al principio, no me atreví a usar escritura orientada a objetos. La razón principal fue que no aclaré mis ideas. Además, los productos de datos eran relativamente complicados en ese momento, por lo que no me atreví a moverlos. También busqué algunos métodos de escritura orientados a objetos en línea, solucioné las ideas y quería tratar de escribirlos solo.
A continuación, analizaré el proceso de escritura orientado a objetos paso a paso. Todo el proceso se divide aproximadamente en:
1. Primero defina el formulario de datos y el conjunto total de productos de una lista de productos, similar a:
var data = [{nombre: 'name', unitPrice: 10, num: 2}]; var total = {type: 0, totalNum: 0, precio: 0};Es obvio que en el nombre de la matriz de datos representa un solo nombre de producto, UnitPrice representa un solo precio unitario de producto, NUM representa una sola cantidad del producto; En el tipo de objeto total representa un tipo de producto, Totalnum representa una cantidad total de productos, y el precio representa un precio total de los productos.
2. Cree una función de carrito de compras Objeto Comprarcar y establezca sus propiedades correspondientes, de la siguiente manera:
function ShoppingCart (nombre, UnitPrice, num) {this.name = name; this.unitPrice = unitprice; this.num = num; this.info = {name: this.name, unitPrice: this.unitprice, num: this.num};}Use una información para guardar el nombre, el precio unitario y la cantidad de un solo producto, y luego debe poner esta información en la matriz de datos y calcular el número total de productos en total, por lo que debe establecer dos métodos de este objeto de función. Simplemente agregue dos métodos debajo de esto. Info:
this.add ();
this.gettotal ();
Aquí queremos explicar por qué estos dos métodos se colocan en el prototipo del objeto de función. Cuando el nuevo objeto de instancia, debe agregar esta información del producto y calcular el número total de productos, por lo que no es necesario usar este objeto de instancia para llamar a estos dos métodos.
Luego use la propiedad prototipo del objeto y coloque todos los métodos en esta propiedad para llamarlo, de la siguiente manera:
CompetingCart.Prototype = {// Agregar Product Add: Function () {var _THIS = this; data.push (_this.info); }, // Total Product Set getTotal: function () {total.type = data.length; Total.totalnum = 0; Total.price = 0; for (var i = 0; i <data.length; i ++) {total.totalnum+= data [i] .num; Total.price += data [i] .num * data [i] .unitprice; }}}3. Si agrega, eliminará un solo producto. Agregue un método para eliminar el producto en el atributo prototipo. Eliminar un producto requiere eliminar el producto especificado en función de un logotipo. Aquí lo elimino a través del valor del nombre. En este momento, se necesita un método para encontrar el producto correspondiente a este nombre en la matriz de fechas, como sigue:
// eliminar el producto delecto: function () {var _this = this; data.splice (_this.eck (_this.name), 1); _This.GetToTal ();}, // Compruebe el producto Comprobación: función (nombre) {for (var i = 0; i <data.length; i ++) {if (name == data [i] .name) return i; }}4. Modifique la cantidad de productos individuales, como sigue:
// Modificar la cantidad de un solo producto cambiante: función (num) {var _this = this; if (num == 0) {_this.delect (); devolver; } var _index = _this.eck (_this.name); datos [_index] .num = num; _THIS.GETTOTAL ();}Aquí debe pasar un parámetro para establecer la cantidad especificada de productos.
El código general es el siguiente:
var data = new Array; var total = {type: 0, totalNum: 0, precio: 0}; funciones compatingcart (name, unitprice, num) {this.name = name; this.unitPrice = unitprice; this.num = num; this.info = {name: this.name, unitprice: this.unitprice, num: this.num}; this.add (); this.gettotal ();} shoppingCart.prototype = {add: function () {var _this = this; data.push (_this.info); }, getTotal: function () {total.type = data.length; Total.totalnum = 0; Total.price = 0; for (var i = 0; i <data.length; i ++) {total.totalnum+= data [i] .num; Total.price += data [i] .num * data [i] .unitprice; }}, delecto: function () {var _this = this; data.splice (_this.eck (_this.name), 1); _THIS.GETTOTAL (); }, ChangeNum: function (num) {var _this = this; if (num == 0) {_this.delect (); devolver; } var _index = _this.eck (_this.name); datos [_index] .num = num; _THIS.GETTOTAL (); }, verificar: function (name) {for (var i = 0; i <data.length; i ++) {if (name == data [i] .name) return i; }}}Los datos de inicialización de esta matriz de datos pueden ser transmitidos de datos desde el fondo, pero el formulario de datos debe ser el mismo que se definió, y se debe llamar al método GetTotal para obtener el conjunto total de productos.
Finalmente, es una nueva instanciación simple una por una, por ejemplo:
var bienes1 = nueva compra de compras ('123', 100, 2) var bienes2 = new Shoppingcart ('456', 10, 3) var bienes3 = nueva compromiso ('789', 1, 4) gots2.delect (); Good3.Changenum (2) Goods2 = New ShoppingCart ('1234', 11, 1) Goods2.Changenum (0)Puede imprimir datos y en total de los resultados/(^o^)/~
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.