对象javascript中的嵌套函数

对象javascript中的嵌套函数,javascript,function,object,nested,object-literal,Javascript,Function,Object,Nested,Object Literal,我正在尝试向我的对象添加一个附加函数。我得到一个未定义的错误。我很困惑。我希望能够进入这一行并执行object函数 var Button = System.Windows.Forms.Control.TabControl(); Button.TabPages.Add(); 这是我目前掌握的代码: System.Windows = {}; System.Windows.Forms={}; System.Windows.Forms.Control={ TabControl: func

我正在尝试向我的对象添加一个附加函数。我得到一个未定义的错误。我很困惑。我希望能够进入这一行并执行object函数

var Button = System.Windows.Forms.Control.TabControl();
Button.TabPages.Add();
这是我目前掌握的代码:

 System.Windows = {};
 System.Windows.Forms={};
 System.Windows.Forms.Control={
    TabControl: function () {
         this.Node;
         var self=this;
         this._ID="id test";
         TabPages= {
             //
             Add: function () {
                 Debug.WriteLine("ADD ID:"+self._ID);
             }
         }
         this.Focus = function () {
             this.Node.focus();
         }
         this.NodeCreate = function () {
             Debug.WriteLine("node created");
             var btn = document.createElement("button");
             btn.type = "button";
             btn.name = this._Name;
             this.Node = btn;
         }
         this.NodeCreate();
     }
 }

不知怎的,我觉得我把范围弄糊涂了。任何帮助都将不胜感激。谢谢。

此操作运行时不会出错,但不会将按钮实际添加到页面中,因为您从未将其添加到文档中。我想这是下一步

    var System = {
            Windows : {
                Forms : {
                    Control : {
                        TabControl : function ()
                        {
                            var self=this;
                            this.Node = null;
                            this._ID="id test";
                            this.TabPages = {
                                //
                                Add: function () {
                                    console.log("ADD ID:"+self._ID);
                                }
                            };
                            this.Focus = function () {
                                 this.Node.focus();
                            };
                            this.NodeCreate = function () {
                                console.log("node created");
                                var btn = document.createElement("button");
                                btn.type = "button";
                                btn.name = this._Name;
                                self.Node = btn;
                                return self.Node;
                            }
                            self.NodeCreate();
                            return this;
                        }
                    }
                }
            }
        },
        Button = new System.Windows.Forms.Control.TabControl();

    Button.TabPages.Add();

我修正了你说的,但是我仍然得到错误“uncaughttypeerror:undefined不是函数”。我认为这与我如何调用add函数或者add函数是如何创建的(嵌套和其他)有关。但我不知道如何修复它。“这是Javascript的一个设计问题,可能会在ES6中修复。”不,不是,因此不会修复。新的是arrow函数将使用与它们所包含的环境相同的
this
值,如果这是您的意思的话。我可以发誓他们将在内部函数中更正“this”,这样我们就不必在使用apply()和call()时一直提供正确的上下文.在何处创建系统对象?在我所能看到的范围内,必须有比您在初始示例中显示的更多的内容
控件
不存在。它是
TabControl
直接在
Forms
之后。当我复制并粘贴到表单时,这是一个打字错误。修好了。问题仍然存在。在
选项卡控件
中,
指的是
系统.窗口.窗体.控件
,您知道吗?要使它像您描述的那样工作,您必须
返回这个,您还必须将
TabPages
分配给
this
,而不是像现在这样将其作为全局变量。然而,整个设置仍然让我感到困惑。