javascript的四种函数调用模式

  1. 这些模式影响到this的初始化参数
  2. 每个函数除了接收正常的参数外,另有2个隐含参数:this, arguments
  3. arguments,是函数接收的调用实参,与形参定义的参数个数无关
  4. arguments并不是一个数组,它除了一个length属性外,没有Array的其他任何方法

  • 方法调用模式
    • 当一个函数保存为一个对象的属性时,这个函数是此对象的方法。此时,在方法中使用this指向的是当前这个对象
  •  函数调用模式
    • 当一个函数并非作为一个对象的属性时,这个函数是全局函数。此时,在方法中使用this指向的是全局对象
  • 构造器调用模式
    • 当在一个函数前面使用new操作符,将创建一个隐藏连接到该函数prototype成员的新对象。此时,this指向这个新对象
    • 使用构造器调用模式的函数定义,建议不要再有return,否则会打断this对象赋值给构造器生成的新对象
    • 之所以有构造器调用模式,是因为作者希望搞出一个面向对象的操作模式来,然而javascript本身又是基于原型链的继承模式
    • 从javascript的实现角度来讲:函数就是对象,函数也是类型,只有函数采用作用域,函数因此成了js世界的一等公民
    • 构造器函数的特点是函数中有this下的属性赋值操作,如果构造器函数没有使用new操作符,这些this下的属性会被放入全局对象window中,造成可怕的全局变量污染
  • apply调用模式
    • 所有的Function都有一个apply方法,apply方法接收2个参数,第一个是指定this对象,第二个是参数数组,用于传给该函数形参
    • 若给Function的原型提供方法,比如Function.prototype定义属性,那么所有的函数就都继承了这个方法,可以直接访问

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值