您好,匿名用户
随意问技术百科期待您的加入

面向对象中嵌套的函数, 关键字 this 怎样处理?

0 投票

一个不明白的问题. 刚开始我学的是用函数式的写法, 而且在 JS 函数嵌套函数是很容易的, 这么就搞定了.
后来我接触到 JS 的 this, 理解每个函数的 this 指向自身所属对象, 接着就开始接触 OOP 的内容了.
但这里有个问题, 如果我再对函数进行嵌套, this 就可能出错了.
比如一个对象的方法里, 里边再定义函数用来作为参数传递..
或者仅仅是 forEach 增加一层作用域:

obj =
  people: ['a', 'b', c]
  data:
    a: 'aaa'
    b: 'aaa'
    c: 'aaa'
  say: ->
    this.people.forEach (name) ->
      console.log this.data[name]

obj.say()

在函数式编程里, 没有看到 this 这样其葩的功能, 而在有 C/Java 一类语言, 不常用嵌套函数的.
就像两个东西不能很好地兼容似的... 但两个都被直接拿过来用在了脚本语言里边
有时候会用一个 _this 来让 this 穿透函数定义, 但我想不是个好办法.
不知道有没有好的方案来解决?

用户头像 提问 2014年 6月7日 @ Nero 上等兵 (377 威望)
分享到:

你的回答

隐私保护: 您的邮箱仅用于发送系统通知。
请输入验证码:
    图片验证码看不清?
登录注册后不会被要求输入验证码。

提一个问题:

相关问题

0 投票
1 回复 24 阅读
0 投票
1 回复 27 阅读
0 投票
1 回复 29 阅读
用户头像 提问 2012年 12月1日 @ Lulu 上等兵 (293 威望)
0 投票
1 回复 156 阅读

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...