如何在对象中执行函数和引用变量

时间:2016-08-25 14:11:11

标签: javascript jquery

我正在努力更好地理解对象文字,并且我坚持这个特定的部分。

我在这里有一个完整的例子 - 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);

1 个答案:

答案 0 :(得分:3)

  

this的值取决于函数的调用方式。

在您的示例中,this引用DOMElement,因为在handler-function的{​​{1}}中,eventthis,在哪个事件被调用!

使用Function#bind

  

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));