视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
使用引用类型对象“三步走”
2020-11-27 20:31:15 责编:小采
文档


引用类型:

引用类型通常叫做类(class),也就是说,遇到引用值,所处理的就是对象。

JavaScript 内置的对象——String、Array、Number、Object都是引用类型,我们这些用户创建的对象实际上是这些类型的实例在JavaScript面向对象的编程过程中引用类型是为了支持‘类’所对应的逻辑出现的。

引用类型由三部分组成:构造函数、方法定义和属性。

以面向对象的方法编写的商店结算收银的POS机系统为例,我们来理解一下引用类型的“三步走”:

第一步,定义引用类型;

即创建构造函数,如下:

Js代码

function Cart(inputs){

this.inputs=inputs;

this.item_info=loadAllItems();

}/*inputs为客户购买商品传入POS机系统的商品信息,loadAllItems()是调用本地商品库中所有商品的

信息(仅用作说明问题不必深究)*/

这里用到了this关键字,在构造函数或方法内,this关键字表示引用类型的当前对象实例,

Java代码

this.inputs=inputs;

这行代码引用了当前对象实例的inputs属性,将之设置为参数inputs(为客户购买商品传入POS机系统的商品信息的条形码barcode)。

第二步,创建属性方法;

Js代码

Cart.prototype.get_item_base_info=function(normal_barcode){

return _.filter(this.item_info,function(item){

return normal_barcode.indexOf(item.barcode)>=0;

})

}//获取条形码对应的商品的信息

Cart.prototype.add_item_count=function(normal_barcode,item_base_info) {

var counts = _.values(_.countBy(normal_barcode));

_.each(item_base_info,function(item){

item.count=counts[_.indexOf(item_base_info,item)];

})

return item_base_info

}//去除相同条形码并记录商品数量

第三步,创建引用类型的实例;

Js代码

var cart=new Cart(inputs);//创建实例cart

在这里要注意,使用new关键字,不使用new关键字所写代码将无法正常工作,而且在实例化之前构造函数及其原型的属性中的方法都不会执行。实例化之后就可以调用构造函数中的原型的方法和输入的数据了。

Js代码

var item_base_info=cart.get_item_base_info(normal_barcodes);/*调用实例的获取条形码对应商品信息

的方法;normal_barcode为经过处理的可以被系统识别的输入的条形码(即顾客购买的商品的可识别条

形码);*/

var item_count_add=cart.add_item_count(normal_barcodes,item_base_info);/*调用实例的去除相同条

形码并记录商品数量的方法;*/

var shopping_list=print_shoppinglist(item_count_add);/*print_shoppinglist为商品单价乘数量所的商

品金额的方法;*/

console.log(shopping_list)//输出并打印结果

下载本文
显示全文
专题