我不推荐使用这种形式的构造函数 。
Apply 调用模式因为 JavaScript 是一门函数式的面向对象变成语言 , 所以函数可以拥有方法 。
apply 方法让我们构建一个参数数组并用其他去调用函数 。 它也允许我们选择 this 的值 。 apply 方法接收两个参数 , 第一个是将绑定给 this 的值 , 第二个就是一个参数数组 。
// 构建一个包含两个数字的数组 , 并将它们相加
vararray=[35
varsum=add.apply(nullarray)// sum 值为 8
// 构造一个包含 status 成员的对象
varstatusObject={
staus:'A-OK'
// statusObject 并没有继承自 Quo.prototype 但我们可以在 statsObject 上调
// 用 get_status 方法 , 尽管 statusObject 并没有一个名为 get_status 的方法
varstatus=Quo.prototype.get_status.apply(statusObject);
console.log(status)
参数当函数被调用时 , 会得到一个「免费」奉送的参数 , 那就是 arguments 数组 。 通过它函数可以访问所有它被调用时传递给它的参数列表 , 包括那些没有被分配给函数声明时定义的形式参数的多余参数 , 这使得编写一个无须指定参数个数的函数成为可能 。
// 构造一个将很多个值相加的函数
// 注意该函数内部定义的变量 sum 不会与函数外部定义的 sum 值产生冲突
// 该函数只会看到内部的那个变量
varsum=function(){
varsum=0
for(letindex=0;index<arguments.length;index++){
constelement=arguments[index
;sum+=element
returnsum
document.writeln(sum(48162342))
这不是一个特别有用的模式 , 我们将会看到如何给数组添加一个相似的方法来达到同样的效果 。
因为语言设计的一个错误 ,arguments 并不是一个真正的数组 , 它只是一个「类似数组」的对象 。 arguments 拥有一个 length 属性 , 但它缺少所有的数组方法 。
返回当一个函数被调用时 , 它从函数第一个语句开始执行 , 并在遇到关闭函数体的时结束 。 那使得函数把控制权交还给调用该函数的程序部分 。
return 语句可用来使函数来提前返回 。 当 return 被执行时 , 函数立即返回而不再执行余下的语句 。
一个函数总是返回一个值 , 如果没有指定返回值 , 则返回 undefined 。
如果函数以前面加上 new 前缀的方式来调用 , 且返回值不是一个对象 , 则返回 this。
异常JavaScript 提供了一套异常处理机制 。 异常是干扰程序的正常流程的非正常的事故 。 当查出这样的事故时 , 你的程序应抛弃一个异常 。
varadd=function(ab){
if(typeofa!=='number'||typeofb!=='number'){
throw{
name:\"TypeError\"
message:'add needs numbers'
;
returna+b
throw 语句中断函数的执行 , 它应该抛出一个 exception 对象 , 该对象包含可识别异常类型的 name 属性和一个描述性的 message 属性 。 你也可以添加其他的属性 。
该 exception 对象将被传递到一个 try 语句的 catch 从句 。
// 构造一个 try_it 函数 , 用不正确的方式调用之前的 add 函数
vartry_it=function(){
try{
add('seven')
catch(error){
document.writeln(e.name+\":\"+e.message)
如果在 try 代码块抛出一个异常 , 控制权就跳转到它的 catch 从句 。
一个 try 语句只会有一个将捕所有异常的 catch 代码块 。 如果你的处理手段取决于异常的类型 , 那么异常处理必须检查异常对象的 name 属性以确定异常的类型 。
- 小米科技|从2699元跌至1849元,12GB+256GB,67W快充旗舰已沦为低档机
- 努比亚|努比亚新品特殊版本带磁吸充电?性价比跟科技感兼顾,确实吸引人
- 联想|原来的清华紫光,北大方正,TCL电脑等国产电脑都去哪儿了?
- TCL|一步到位的客厅“神机”?TCL X11 QD-Mini LED首测
- 小米科技|天玑1200+5065mAh,现已重回1499元,小米旗舰售价良心
- 一加科技|Redmi K50旗舰系列预热启动,性能表现值得期待
- 企业|排名垫底!茅台被撤销国家企业技术中心资格:酱香科技不香了?
- 淘宝|弘辽科技:淘宝报什么活动流量最大呢?
- 一加科技|2月份8Gen1手机销量意外,红米超过小米,一加成大黑马
- 小米科技|新机:华为1亿像素手机;iPhoneSE3内存升级到4GB;小米手环7