又一个 JS 的问题

2015-12-08 11:27:30 +08:00
 Exin
有如下结构:
A = {};
A.prototype = {
b = {
do = function(){
//...
}
}
}

可不可能在函数 do 内部获取到 A ?(就像在 A 内用 this 的效果)
1380 次点击
所在节点    问与答
9 条回复
behappy
2015-12-08 12:09:44 +08:00
var A = {};
A.prototype = {
b : function() {
var do1 = function() {
console.log(this)
}.bind(this)
}
}
fds
2015-12-08 12:20:17 +08:00
调用的时候用 apply 呗
FrankFang128
2015-12-08 12:22:55 +08:00
你直接写 A 呀
sneezry
2015-12-08 13:18:33 +08:00
对啊,为啥不直接写 A 啊
sneezry
2015-12-08 13:19:56 +08:00
楼主,你问的问题有个地方不清楚。 A.prototype.b 在创建实例时不会被复制,所以楼主你想在 b 里访问的是原型 A 还是创建的实例?
Exin
2015-12-08 13:25:20 +08:00
@FrankFang128
@sneezry
不知道是不是我写的不对,写 A 获取到的不是同一个 A ……
需要访问的是实例
slixurd
2015-12-08 14:29:12 +08:00
虽然不懂 JS ,但是闭包不是应该能直接获取同个作用域下的外部实例么
sneezry
2015-12-08 17:29:41 +08:00
@slixurd 这个要看调用的地方,不能看声明的地方, this 是在运行的时候决定指向谁的,不是在写代码时决定的,所以这个问题问的不好,看不出 this 的上下文。
Exin
2015-12-08 17:40:56 +08:00
@sneezry 那这么问可以吗:在 b 内如何获取 b 所在的 A 的实例?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/241941

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX