我正在努力更好地理解对象文字,并且我坚持这个特定的部分。
我在这里有一个完整的例子 - https://jsfiddle.net/breezy/dqjpkus4/
我正在尝试使用整个对象的设置,但控制台说我的项目未定义。但是,我想把它转换成一个对象。您可以在此处查看我正在进行的工作以及发生错误的位置 - http://codepen.io/BryanBarrera/pen/OXZvgR
我的问题是如何访问此部分:
boxes: $('.boxes'),
container: $('.container'),
从我的职能部门?
showMore: function() {
},
showLess: function() {
},
我想要做的另一个例子 - 以下是我被卡住的小提琴。 https://jsfiddle.net/breezy/86Lryrep/
init
部分有效但当我尝试在点击时执行该功能时,它会给我一个错误。
"use strict";
var object = {
container: $('.container'),
item: $('div'),
textToAlert: 'Working',
init: function() {
console.log(this.textToAlert);
},
firstFunction: function() {
// here i should be able to use container and item
// but when i use my click event it doesn't work.
console.log(this.item.length);
},
secondFunction: function() {
// here i should be able to use container and item
}
}
object.init();
$('button').on('click', object.firstFunction);
答案 0 :(得分:3)
this
的值取决于函数的调用方式。
在您的示例中,this
引用DOMElement
,因为在handler-function
的{{1}}中,event
是this
,在哪个事件被调用!
bind()方法创建一个新函数,在调用时,将其this关键字设置为提供的值,并在调用新函数时提供任何前面提供的给定参数序列。
Element
var object = {
container: $('.container'),
item: $('div'),
textToAlert: 'Working',
init: function() {
console.log(this.textToAlert);
},
firstFunction: function() {
console.log(this.item.length);
},
secondFunction: function() {}
}
object.init();
$('button').on('click', object.firstFunction.bind(object));