🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 前言 也许你已经觉得你会用function了,但是有些也许你还不知道,比如js类功能。 ## 特点 * js函数是特殊的对象类型,可以当做对象的构造器,支持参数构造对象 * js类具有很好的继承性,可以实现数据模型的复用 ## js类 * js类 语法 : ~~~ function aninmal(name){ this.name=name; this.play=function(){ console.log("i can play!") } } ~~~ * 类this指向:call或者apply 继承 ~~~ //例如 dog 继承animal 类 function dog (name,smell){ this.smell=smell; animal.call(this,name); // animal.apply(this,[name]); } ~~~ * js临时属性值继承 ~~~ function dog (name,smell){ this.smell=smell; this.temp=animal; this.temp(name); delete this.temp; } ~~~ * js原型链继承 ~~~ function dog (name,smell){ this.smell=smell; } dog.prototype=new animal(4); ~~~ ## es6拓展 * 函数参数默认值 任何带有默认值的参数都被认为是可选参数,不带默认值的称为必填参数。 ~~~ function Point(x=0,y=0){ this.x=x; this.y=y; } var po=new Point();//默认0,0 function missPara(){ console.log("少传递参数错误"); } function demo(data=missPara){ return data; }//有参数 返回参数 没参数返回少参 ~~~ * rest参数,用于获取参数的多余部分 ~~~ rest之后不能再有其他参数 function add(a,...val){ let sum=0; sum+=a; for(var v of val){ sum+=v; } return sum; } add(56,5654,4564,1,4564,-345);//运算得到最终的结果 ~~~ * 拓展运算符 讲一个数组转为逗号分隔的参数序列,主要用于函数调用,亲测可用 ~~~ var numbers=[2,56]; add(...numbers)//58 ~~~ * 箭头函数 es6中允许用箭头函数进行简化语法,亲测可用 ~~~ var demo=(num1,num2)=>5675; var demo=(num1,num2)=>num1*num2 var demo=(num1,num2)=>{return num1*num2+num2} var demoo=()=>({id:111}) ~~~