箭头函数也叫lambda表达式

据说其主要意图是定义轻量级的内联回调函数

栗有:

1 var arr = ["wei","ze","yang"];
2 arr.map(item=>"Mr."+item); // ["Mr.wei", "Mr.ze", "Mr.yang"]

实则

1 var arr = ["wei","ze","yang"];
2 arr.map(function(item){
3 return "Mr."+item;
4 });

1.注意点:

(1)当箭头函数有一个参数的时候,参数可以不加括号,没有参数的时候就必须要加。

定义 函数名 = 参数 => 函数体

1 var student = name => "my name is " + name;
2 console.log(student("wei ze yang"));
3 // my name is wei ze yang

(2)如果函数体不止一行,应该用花括号括起来,这时就要显示地返回。

定义 函数名 = (参数,参数) => {

  函数体;

  return 返回值;    

}

1 var student = (name,age) => {
2 age +=1;
3 return "name:" + name + ",age:" + age;
4 }
5 console.log(student("wei ze yang",21));
6 // name:wei ze yang,age:22

2.arguments object

正常的函数内:

1 function student(name,age){
2 console.log(arguments[0]);
3 }
4
5 student("weizeyang",22);

但箭头函数不会暴露argument对象

1 var student = (name,age) => {
2 console.log(arguments[0]);
3 }
4
5 student("weizeyang"); // arguments is not defined

所以,argument将简单地指向当前作用域内的一个变量

1 var arguments = ["Mr.wei"];
2
3 var student = (name,age) => {
4 console.log(arguments[0]);
5 }
6
7 student("weizeyang"); // "Mr.wei"

或者这时可以使用“剩余参数”的时候代替

1 var arguments = ["Mr.wei"];
2
3 var student = (...arguments) => {
4 console.log(arguments[2]);
5 }
6
7 student("weizeyang",22,true); // true

3.绑定this的值

箭头函数是lexically scoped(词法作用域),这意味着其this绑定到了附近scope的上下文。

也就是说,不管this指向什么,都可以用一个箭头函数保存。

 1 var student = {
2 names:["wei","ze","yang"],
3 setName: function() {
4 console.log(this);
5 this.name = this.names.join("")
6 },
7 getName: function() {
8 console.log(this);
9 return () => {
10 return {
11 myName : "my name is " + this.name
12 }
13 }
14 }
15 }
16
17 student.setName();
18 var student1 = student.getName();
19 console.log(student1().myName);
20 // my name is weizeyang

有图为证,看下

4.相关文档

http://blog.csdn.net/cuit/article/details/53200335

https://zhuanlan.zhihu.com/p/24856798

使用 this.$refs 来获取元素和组件

  1.  
    <div id="app">
  2.  
    <div>
  3.  
    <input type="button" value="获取元素内容" @click="getElement" />
  4.  
    <!-- 使用 ref 获取元素 -->
  5.  
    <h1 ref="myh1">这是一个大大的H1</h1>
  6.  
     
  7.  
    <hr>
  8.  
    <!-- 使用 ref 获取子组件 -->
  9.  
    <my-com ref="mycom"></my-com>
  10.  
    </div>
  11.  
    </div>
  12.  
     
  13.  
    <script>
  14.  
    Vue.component('my-com', {
  15.  
    template: '<h5>这是一个子组件</h5>',
  16.  
    data() {
  17.  
    return {
  18.  
    name: '子组件'
  19.  
    }
  20.  
    }
  21.  
    });
  22.  
     
  23.  
    // 创建 Vue 实例,得到 ViewModel
  24.  
    var vm = new Vue({
  25.  
    el: '#app',
  26.  
    data: {},
  27.  
    methods: {
  28.  
    getElement() {
  29.  
    // 通过 this.$refs 来获取元素
  30.  
    console.log(this.$refs.myh1.innerText);
  31.  
    // 通过 this.$refs 来获取组件
  32.  
    console.log(this.$refs.mycom.name);
  33.  
    }
  34.  
    }
  35.  
    });
  36.  

最新文章

  1. python获取父类的子类(遍历,递归),并循环执行所有子类的某一方法
  2. MySQL点滴
  3. ExtJs 获取Dom对象
  4. MFC打开文件对话框
  5. Asp.net弹出层并且有遮罩层
  6. Light oj 1197 - Help Hanzo (素数筛技巧)
  7. EWM Matrai B2B管理平台
  8. hadoop配置及无法移动文件到hdfs故障解析
  9. 同时支持多家云平台的管理工具HybridFox
  10. Redis在电商中的实际应用-Java
  11. Docker学习笔记 - Docker的数据卷容器
  12. spark-sql分组去重总数统计uv
  13. Java的类型强制转换
  14. Yii2 设计模式——静态工厂模式
  15. 字符编码:Unicode和UTF-8之间的关系
  16. TCP、UDP和HTTP详解
  17. EasyUI datebox 设置不可编辑后再次修改为可编辑失效的解决
  18. HTML中元素的position属性详解
  19. 每日英语:How to Solve India&#39;s Huge Food Wastage
  20. facebook 摘要生成阅读笔记(一) A Neural Attention Model for Sentence Summarization

热门文章

  1. Django :中间 件与csrf
  2. 使用BCP实用工具导出导入数据
  3. 安装Genymotion模拟器(第三方)
  4. 关于windows中 redis 闪退问题
  5. 学到了林海峰,武沛齐讲的Day24-完 对象和实例
  6. SQL Server全文检索
  7. 百度UE编辑器从word粘贴公式
  8. leetcode解题报告(19):Contains Duplicate II
  9. TortoiseGIT提交
  10. 【原创】sed正则表达式替换