• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Lua里面new一个对象详细步骤

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
 实现代码 结果

关键: 1.  __index 元方法 可以让classA在被其它表XX设置为元表时, XX被访问YY时如果XX里没有YY,但是XX有元表且元表有__index 就会继续访问元表里有没有YY
关键: 2. new方法最后返回的是新创建的o,所以test_a, test_b最终访问的才不是同一个getA getB 而o又把classA设置为了元表,访问顺序见关键1
关键: 3.  getA方法里的self指的是调用它的对象,而不是classA这个对象本身(当然classA也可以作为调用它的对象,比如里传入的self就是classA对象) ,classA:getA的写法只是说明getA是在classA里面定义的而已.

综合三点:
 的调用顺序: 
1.查看test_a里有没有getA方法  其中test_a里包含的成员为: a,b,元表 classA 
2.发现没有getA方法,继续确认getA有没有元表, 发现有元表 classA
3.查看 元表classA有没有 __index元方法,发现存在
4.继续访问classA里有没有getA()方法
5.发现存在getA()方法,就调用它   注意这里传入的self 是test_a对象 (关键3)
6.查看 test_a里有没有 成员a , 其中test_a里包含的成员为: a,b,元表 classA 
7.发现存在a,所以返回a

结论: 最终其实test_a test_b访问的都是自己定义的a和b,而不是classA里的 a和b.  (测试:把classA里的代码清空  结论:依然可以正确执行)

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Lua入门级笔记摘要发布时间:2022-07-22
下一篇:
LUA学习笔记三·时间等操作系统库发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap