我在从该对象上的方法访问对象的属性时遇到问题。问题的形式如下:
function Person() {
this.siblings = {
brothers: ["Adam", "Carl"],
sisters: ["Betty", "Dorothy"]
};
this.first_sister = function() { console.log(this.siblings.sisters[0]); }
this.button_event = function() { $(".btn").on("click", this.first_sister); }
}
Fanny = new Person();
Fanny.button_event();
而不是记录"贝蒂"到了控制台,我的代码记录了#34; Uncaught TypeError:无法读取属性'姐妹'未定义"当按下.btn元素时。
但是,如果我打开控制台并输入console.log(Fanny.siblings.sisters [0])或Fanny.first_sister(),它将返回" Betty"。
我认为这与我如何使用'这个'有关。在jquery事件处理程序中,但我没有尝试过(那个=等等)有帮助。发生了什么事?
答案 0 :(得分:0)
如果您var that = this
范围的根目录Person
应该注意了解您所指的this
。
function Person() {
var self_person = this;
self_person.siblings = {
brothers: ["Adam", "Carl"],
sisters: ["Betty", "Dorothy"]
};
self_person.first_sister = function() {
$("#out").append(self_person.siblings.sisters[0] + "<br/>");
}
self_person.button_event = function() {
$(".btn").on("click", self_person.first_sister);
}
}
Fanny = new Person();
Fanny.button_event();
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<button class="btn">Clickme</button>
<br/>
<div id="out"></div>
&#13;