Javascript 如何从嵌套函数访问构造函数的方法/字段
我试图从嵌套函数访问构造函数的字段 这是我的密码:Javascript 如何从嵌套函数访问构造函数的方法/字段,javascript,javascript-objects,Javascript,Javascript Objects,我试图从嵌套函数访问构造函数的字段 这是我的密码: var Box = function() { this.div = $("div#mydiv"); this.guide = { div: $("div#mydiv2"), scroll: function() { $(document).scrollTo(this.div); //Want to scroll to mydiv2 alert(Box.div.attr("id"));
var Box = function() {
this.div = $("div#mydiv");
this.guide = {
div: $("div#mydiv2"),
scroll: function() {
$(document).scrollTo(this.div); //Want to scroll to mydiv2
alert(Box.div.attr("id")); //Want to alert mydiv id
//How do I access the div field of the Box constructor?
}
}
}
如果我这样调用scroll方法:
var a = new Box();
$("#button").click(function() {
a.guide.scroll();
});
Box.div
返回为未定义
如果我尝试将
方法中div属性的id
作为滚动this.div
发出警报,它将使用指南
对象中的div属性。我尝试使用Box.div
引用guide
对象外部的div字段,但这不起作用。请帮我解决这个问题。将其添加到Box函数的第一行:
var Box = function() {
var self = this;
然后在警报中,使用self
而不是this
,因为this
不是指顶级功能(框)
将其添加到Box函数的第一行:
var Box = function() {
var self = this;
然后在警报中,使用self
而不是this
,因为this
不是指顶级功能(框)
这是因为滚动函数中的“this”对象指的是函数本身。您需要缓存对最外面的“this”对象的引用,并改用它。请参阅此小提琴以了解示例:
这是因为滚动函数中的“this”对象指的是函数本身。您需要缓存对最外面的“this”对象的引用,并改用它。请参阅此小提琴以了解示例:
@Topener--
self
总是指顶级函数吗?@codennija是的,因为您在那里定义了self
,它确实指的是这个@Topener--谢谢。答案在你学会之后似乎很明显哈哈@Topener——self
总是指顶级函数吗?@codennija是的,因为您在那里定义了self
,它确实指的是这个
@Topener——谢谢。答案在你学会之后似乎很明显哈哈!