js执行(3)

  1. 几种函数

    a. 普通函数
    function foo(){};

    b. 箭头函数
    const foo = () => {}

    c. 在class中定义的函数 ( 方法 )
    class C {
    foo(){}
    }

    d. 生成器函数 ( function* )
    function* foo(){

     }
    

    e. 用class定义的类
    class Foo {
    constructor(){
    // code
    }
    }

    f. 异步函数: 普通函数、箭头函数和生成器函数加上async关键字

     async function foo(){
         // code
     }
     const foo = async () => {
         // code
     }
     async function foo*(){
         // code
     }
    
  2. this
    a. this值在不同的函数类型中有不同的效果

     普通函数的 this 值由“调用它所使用的引用”决定
    
         function showThis(){
             console.log(this);
         }
    
         var o = {
             showThis: showThis
         }
    
         showThis(); // global
         o.showThis(); // o
    
     箭头函数
         不论用什么引用来调用它,都不影响它的 this 值。
    
         const showThis = () => {
             console.log(this);
         }
    
         var o = {
             showThis: showThis
         }
    
         showThis(); // global
         o.showThis(); // global
    
     方法函数
    
         class C {
             showThis() {
                 console.log(this);
             }
         }
         var o = new C();
         var showThis = o.showThis;
    
         showThis(); // undefined
         o.showThis(); // o
    
     *生成器函数、异步生成器函数和异步普通函数跟普通函数行为是一致的,异步箭头函数与箭头函数行为是一致的
    

    b. Reference类型: 由一个对象和一个属性值组成。

    c. this 关键字机制
    上下文的私有属性[[Environment]]

     [[thisMode]] 私有属性有三个取值:
         lexical:表示从上下文中找 this,这对应了箭头函数。
         global:表示当 this 为 undefined 时,取全局对象,对应了普通函数。
         strict:当严格模式时使用,this 严格按照调用时传入的值,可能为 null 或者 undefined。
    
    
     var o = {}
     o.foo = function foo(){
         console.log(this);
         return () => {
             console.log(this);
             return () => console.log(this);
         }
     }
    
     o.foo()()(); // o, o, o
    

    d. new与this
    a. new的执行过程
    以构造器的 prototype 属性(注意与私有字段[[prototype]]的区分)为原型,创建新对象;
    将 this 和调用参数传给构造器,执行;
    如果构造器返回的是对象,则返回,否则返回第一步创建的对象。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值