如何从嵌套函数访问构造函数的方法/字段
How to access a method/field of a constructor from a nested function
我正试图从嵌套函数访问构造函数的字段。
这是我的代码:
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?
}
}
}
如果我这样调用滚动方法:
var a = new Box();
$("#button").click(function() {
a.guide.scroll();
});
Box.div
返回为未定义。
如果我尝试将scroll
方法中div属性的id
alert
作为this.div
,它将使用guide
对象中的div属性。我尝试过使用Box.div
在guide
对象外部引用div字段,但这不起作用。请帮我弄清楚。
将其添加到Box函数的第一行:
var Box = function() {
var self = this;
然后在警报中,使用self
而不是this
,因为this
不是指顶级功能(框)。
$(document).scrollTo(self.div);
这是因为滚动函数中的"this"对象指的是函数本身。您需要缓存对最外层"this"对象的引用,然后使用它。见这个小提琴的例子:
http://jsfiddle.net/tuando/kBc5K/
相关文章:
- Meteor-添加用户自定义字段的方法不起作用
- 使用通用方法覆盖每个组合getValue字段
- 当输入字段为空时,如何在angular中调用方法
- 如何将onChange方法添加到ExtJS 4表单中的所有字段(textField)中
- 有没有什么方法可以通过输入字段(type=file)来找出选择了多少个文件
- 在jquery中,从同一对象的属性设置输入字段和标签的正确方法是什么
- 在原始对象的基础上创建新对象的最简单方法,但没有几个字段
- 有没有一种方法可以在mongoose中的find()中使用变量作为字段名
- 是否可以使find()和findOne()方法只返回模式字段
- javascript是将onchange用于多个字段的更好方法
- 在MongoDB中,从文档中获取单个字段数组的最简单方法是什么
- Rally SDK 2 标签选择器是否有必填字段?对象没有方法'getContextPath'
- 使用 Postman 和 Javascript 在 API 方法中查找特定字段
- JavaScript 方法或模板字段中的服务器端方法
- 选择另一个单选按钮字段时重置单选按钮字段的最佳方法
- 为输入字段(而不是表单的一部分)设置默认按钮(或在 javascript 中触发其事件)的最佳方法
- html表单输入字段验证的正确方法是什么
- 编辑输入字段时的触发方法
- CouchDB:访问_design视图或提取文档字段的替代方法是什么
- 如何从嵌套函数访问构造函数的方法/字段