js---包装类

1.包装类----js以new的方式抽象出一类相同特征的对象的集合,就是说new会产生一个由构造函数丰满后的对象

function Person(){
    //var this={}  系统在new的时候隐式产生
    ...//函数里的代码
    //return this  系统在new的时候隐式产生
}
var person = new Person();//由于new的时候,会返回一个有构造函数构造后得到的{},所以这里的person是个对象
function Person(name,age){
    //var this={}  系统在new的时候隐式产生
    this.name=name;//this就是当前隐式产生的{}
  this.age=age;
   this.sex='male';
    //return this  系统在new的时候隐式产生  此时this经过构造函数的丰满,this--->{name:'xiaohong',age:12,sex:'male'}--->就是person
}
var person = new Person('xiaohong',12);//由于new的时候,会返回一个有构造函数构造后得到的{},所以这里的person是个对象

例子---修改构造函数返回值:

function Person(name,age){
    //var this={}  系统在new的时候隐式产生
    this.name=name;//this就是当前隐式产生的{}
    this.age=age;
    this.sex='male';
    return {name:'haha',age:1}
    //return this  系统在new的时候隐式产生  此时this经过构造函数的丰满,this--->{name:'xiaohong',age:12,sex:'male'}--->就是person
}
var person = new Person('xiaohong',12);//由于new的时候,会返回一个有构造函数构造后得到的{},所以这里的person是个对象
console.log(person)//{name:'haha',age:1}   但是注意:如果构造函数内人为的返回一个原始值,那么依然会返回系统的this,也就是说new出来的必须是个对象

例子---系统自带的构造函数:

var arr = new Array();
var string = new String();
var boolean = new Boolean();
var num=new Number();
console.log(arr,string,boolean,number);//[] {"",length:0} {false} {0} 这是简写形式,大家有兴趣可以自己打印试下,值都在[[PrimitiveValue]]存着,另外从另个方面说明数组也是对象
注意:这四种都在自己构造函数的原型重写了toString方法,用以转换为字符串形式,而不是调用Object的toString,这就是Js中函数的重写

上面先说系统自带的构造函数是为了说明系统隐式的包装类

例子---原始值是不可能有属性的,但是会存在包装类

var num = new Number(123);
console.log(num);  //{123}
num.len=5;
console.log(num.len,num*2,num);  //5 246 {len:5,[[PrimitiveValue]]:123}


//但是对于原始值来说---数字
var num = 12;
num.length = 2;
//num是原始值的数字,系统会隐式包装类---new Number(num),并且执行new Number(num).len=2 
//但是系统会发现这个new Number(num)在任何地方都没有被引用,会立马delete这个对象
console.log(num.length);
//undefined 系统又遇到num.len  又会隐式包装类---new Number(num),
//然后此时的new Number已经是一个新的了,不是刚刚赋值的那个了,这个新的自然是没有len属性的



//为什么数组和字符串都能取到length,但是数组可以截断,修改length,但是str不可以??
var arr=[1,2,3];
arr.length=2; 
//系统会隐式包装类---new Array(arr).length=2 然后销毁?---答案是不可能
//new Array返回的是啥?是数组!原始值不可能被new返回!!所以数组不是原始值
//意味着数组本身就是对象,然后系统配的就有length属性,对象的属性想改就改,改了就生效,不需要隐式包装类。
console.log(arr);//[1,2]
var str='abcd';
str.length=2; //系统会隐式包装类---new String(str).length=2,然后销毁new String()对象 
console.log(str,str.length);//'abcd' 4---new String(str).length,字符串本身系统就给配了length属性,即在new String(str)时传的str的字符个数





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
el-upload分片上传文件是一种将大文件分成多个小块进行上传的方法。在上传过程中,需要将每个切片正确地设置进度条。可以通过上传每个切片并设置进度条的方式来实现。具体的实现步骤如下: 1. 首先,需要将文件切成多个小块,每个小块称为一个切片(chunk)。可以使用Chunk类来表示每个切片的信息,包括切片的编号、大小、总大小、文件标识、文件名等信息。\[3\] 2. 在前端的JavaScript部分,可以使用el-upload组件来进行文件上传。可以通过重写httpUploadFile方法来实现分片上传。在该方法中,可以调用cutFile方法将文件切片,并将切片上传到后台。\[2\] 3. 在cutFile方法中,可以使用FormData对象来包装每个切片,并通过ajax发送到后台。同时,需要设置contentType为false,processData为false,以确保ajax上传文件时不会对数据进行处理。在xhr函数中,可以添加文件上传的监听,通过onprogress事件来监听上传进度,并将进度信息设置到进度条中。\[1\] 4. 在后台的上传接口中,可以接收到每个切片的数据,并将其保存到服务器上。可以根据切片的编号、文件标识等信息来组装完整的文件。可以使用后台框架提供的文件上传功能来实现文件的保存和组装。 通过以上步骤,就可以实现el-upload分片上传文件,并正确设置进度条。 #### 引用[.reference_title] - *1* *2* [el-upload使用http-request切片上传以及使用base64压缩图片展示缩略图](https://blog.csdn.net/Sijin_Asu/article/details/125895799)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [elementUI大文件分片上传](https://blog.csdn.net/lxw1005192401/article/details/128201698)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值