我正在检查一个this.hash属性onClick of tab但是onload hash不存在,我可以添加hash属性onLoad来让这个条件通过吗? 所以self。$(" first")。ready(renderPage)被调用onLoad,我试图将this.hash添加到它,以便它在renderPage()中传递条件。
render : function () {
self = this;
renderPage = function () {
console.log("this.hash : " + this.hash);
if (this.hash) { // this.hash is only present when tab is clicked onLoad its undefined
//do some stuff
getTabClicked(this.hash);
}
buildString();
ajaxData.callAPI(function (data) {
// process data and render output;
});
}
onloadCall = function () {
$(self.el).html(self.template());
self.$(tab).html(self.templateFlyout());
self.$("#allTabs").tabs().addClass("xyz");
self.$("#first").tabs();
self.$("#second").tabs();
//this.hash = "first"; // but it gives error this is undefined.
self.$("first").ready(renderPage); // I want to add this.hash before this call
self.$("[id^=tabs-]").click(renderPage);
onMenuChange();
},
readJson = function () {
$.getJSON("./js/data/myJson.json", function (data) {
jsonData = data;
onloadCall();
});
};
readJson();
return this;
}
答案 0 :(得分:1)
是的,很容易。
this.newProperty = value;
// Or
this[newProperty] = value;
this
由当前函数的上下文定义。如果要在其使用的函数之外访问this
的相同定义,则必须知道该定义是什么。在您的情况下,看起来定义是document
,因为您说上下文是[#Object HTMLDocument]
。因此,要将hash
属性添加到该版本,这很简单:
// instead of
this.hash = "first";
// use
document.hash = "first";