我可以将一个属性添加到当前"这个"宾语?怎么样?

时间:2014-08-12 23:12:49

标签: javascript this

我正在检查一个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;
        }

1 个答案:

答案 0 :(得分:1)

是的,很容易。

this.newProperty = value;
// Or
this[newProperty] = value;

this由当前函数的上下文定义。如果要在其使用的函数之外访问this的相同定义,则必须知道该定义是什么。在您的情况下,看起来定义是document,因为您说上下文是[#Object HTMLDocument]。因此,要将hash属性添加到该版本,这很简单:

// instead of
this.hash = "first";
// use
document.hash = "first";