尝试重新使用“;这个“;属性,则它将失去作用域
Error when trying to re-use the "this" property in an object, it loses scope
给定以下对象:
var data = {
el : $('.element'),
value1 : this.el.data('value1')
}
为什么this
失去作用域?然后抛出错误?
我可以只做以下操作,但效率不高,因为我基本上要选择两次div:
var data = {
el : $('.element'),
value1 : $('.element').data('value1')
}
这适用于以下功能:
var data = {
el : $('.element'),
test : function () {
console.log(this.el) // works
}
}
试试这个:
var $element = $('.element');
var data = {
el : $element,
value1 : $element.data('value1')
}
this
不属于jQuery,当你用jQuery选择一个元素时,它不会改变你所在范围内this
的值。this
基本上是包含你所在的函数的对象。有时有jQuery方法会把this
变成DOM元素,无论你使用什么方法,你都需要阅读文档。我们无法从这段代码中确定this
是什么,因为它不包含函数。
另一个选项,我想是这样的:
var data = {
e : $('.element'),
value1: function(){return this.e.data();}
}
我对这个解决方案并不满意,但它将完全封装数据中的所有内容
以下是我刚才尝试的内容:
你觉得怎么样?
var data = {
el : $('.element'),
initialize: function() {
this.mydata = this.el.data('mydata');
}
}
执行此
el = $('.element');
var data = {
el : el,
value1 : el.data('value1')
}
无论如何,这看起来很奇怪,也许更多的上下文可以帮助它看起来更好(当你可以从jQuery对象中获得值时,为什么要在对象上传递jQuery对象及其值?)
像一样使用它
var data = {
el : $('.element'),
value1 : function () {
return this.el.data('value1')
}
}
console.log(data.value1());//foobar
console.log(data.value1.call({}));//error
var data = {
el : $('.element'),
value1 : function () {
return data.el.data('value1')
}
}
console.log(data.value1());//foobar
console.log(data.value1.call({}));//foobar
在第二种方法中,即使您在任何作用域
相关文章:
- 监视函数从服务返回不起作用,但作用域函数起作用
- 从匿名函数调用mouseover函数时失去作用域
- 尝试重新使用“;这个“;属性,则它将失去作用域
- jQuery 样板 - 失去对“this”作用域的访问权限
- Javascript 局部和全局变量在回调函数中失去作用域
- "这个“;正在失去其父Core的作用域
- AngularJs按钮失去作用域
- Javascript嵌套函数失去作用域
- 为什么JavaScript中的子对象会失去全局作用域
- 匿名函数失去作用域
- 在jQuery AJAX Lightbox中失去作用域
- Angularjs:在两个指令之间失去作用域
- 将JavaScript函数传递给对象内的另一个函数会失去对象变量作用域
- 两个子类继承了超类的属性,并且没有失去作用域
- Javascript Promise/然后失去作用域
- AngularJS:在promise之后的指令中失去作用域
- 在angularjs中,当调用请求的控制器失去作用域时,如何中止http请求
- AngularJS-HTML在ng重复中失去了模板替换的作用域
- 失去变量作用域
- 为什么这个闭包作用域的变量失去了它的值