## 前言
也许你已经觉得你会用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})
~~~
- 前端入门
- 前端入职须知
- 前端自我定位
- pc与手机页面差别
- 前端书单
- 前端种子计划
- 前端技术栈
- ps
- ps入门阶段
- html
- html入门
- html代码规范
- meta
- table
- iframe
- a标签详解
- image
- html代码审查工具
- h5专题
- h5入门
- h5新增属性
- canvas画布教程
- audio/video
- Geolocation
- Websockets
- Web storage
- Communication
- Web Workers
- requestAnimationFrame
- css
- css入门必学
- css代码规范
- 项目字体规范
- css基本位置布局
- css常见样式命名规则
- css代码优化建议
- css常用样式名
- css选择器攻略
- css盒子模型的理解
- css属性继承与默认值
- css代码审查工具
- css中常见的知识盲区
- css3新特性浅谈
- css新特性了解
- border-radius
- background
- transform
- animation
- white-space
- css常用技术
- 文本两端对齐
- css之浮动解决方案
- css优化建议
- 文本超出省略
- img-sprites
- rem布局教程
- 水平居中&垂直居中
- 固宽&变宽布局
- 宽高固定比例的盒模型
- 样式预处理语言
- less教程
- sass教程
- postcss教程
- js
- javascript入门
- js代码规范
- js基础拓展
- js代码审查工具
- js性能优化
- js基本语句
- 基本运算
- 基本语句语法
- js对象
- es6入门
- obj
- Array
- Date
- String
- Boolean
- Number
- Json
- RegExp
- Math
- function
- jquery入门
- jq核心思想
- jq基本语法
- jq插件库汇总
- js常用技术
- break&continue区别
- js对日期转换
- js控制运动-move.js
- 原生js-cookie语法
- ajax请求后回调
- 表单数据序列化
- zepto
- zepto入门
- 百度touchjs
- js编程
- 插件库
- 功能性插件
- pdfjs
- wdatepicker
- qrcoder
- barcode插件
- photoviewer
- hammer.js
- echarts
- 交互组件
- layerjs
- java
- java入门
- java基本语句
- springMVC
- javaweb
- vm模板引擎
- freemarker
- maven教程
- mySql教程
- flex教程
- flex入门
- git教程
- git入门
- git分支
- git-tag管理
- git注意事项
- git-torise入门
- ide-git插件使用
- web
- web兼容
- web兼容思想
- pc端兼容适配文档
- pc端兼容bug汇总
- ie兼容bug汇总
- 手机兼容bug汇总
- web安全
- jeecms
- web存储
- app/h5组件
- 安卓教程
- ios教程
- 前端教程
- rubikx的教程
- 其他
- artTemplate
- tmod使用
- 跨域问题
- markdown教程
- 常用工具
- postman-api调试
- web常识
- 浏览器ua统计
- ui框架
- easyui
- bootstrap
- 入门推荐
- weui
- sui-pc
- sui-mobile
- layerUi