对象:方法表达式

方法表达式

按调用方式不同,方法可分为expression和value两种模式。

  • 表达式模式将方法视作普通函数,须显式传入receiver参数。
  • 值模式打包receiver和function,以便传递和稍后调用。

方法本身可以看作函数,把函数赋值给一个变量很正常,同样的,方法也可以这样做,但是处理时候有两种方法,第一种用类型表达是一个普通的函数,因为它没有和实例相绑定,调用的时候必须显式的提供参数,第二种用实例表达是绑定方法,它带有两部分信息,第一是函数,第二是当前实例,接下来调用方法的时候自动展开。我们把第一种称之为方法表达式(Method Expression),没有和某个实例相绑定,只有函数,第二种称之为方法值(Method Value),有函数和当前对象实例复制品,实例复制品和参数有关系,如果是指针,复制品就是指针,如果是值类型,复制品就是完整的复制。它和闭包做法一样。

class A{
    a()
    b()
    c()
}

x = new A()
x.a()
x.b() //method call

A.a(x)
A.b(x) //method expression

var z = x.a //method value
z() //===>x.a() === {x/instance, a/method}

在现在高级语言里,函数和方法是第一类型对象,它可以赋值给一个变量的,执行z(),被翻译成x.a()调用,也就意味着z里面必须包含两个数据,第一个x的实例,第二个a的方法。z必须要存储

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值