Javascript关键字THIS和元素

Javascript关键字THIS和元素,javascript,Javascript,在此上下文中,什么是关键字THIS?“sky.containers”或“Window”?如果没有变量定义此名称,则什么是元素?Window()是一个构造函数。这意味着当您创建一个新对象时,它会被调用 if( !sky.containers ) sky.containers = { Window : function() { this.element = document.createElement("div");

在此上下文中,什么是关键字THIS?“sky.containers”或“Window”?如果没有变量定义此名称,则什么是元素?

Window()是一个构造函数。这意味着当您创建一个新对象时,它会被调用

if( !sky.containers ) sky.containers =
{
        Window : function()
        {
                this.element = document.createElement("div");
                this.element.modal = false; 
                this.element.height = 240;
                this.element.draggable = true;
                this.element.resizable = true;
                this.element.position = "center";
                this.element.width = 240;
                this.element.target = document.body;
                this.element.title ="";
                this.element.headerHeight = 30;;
                this.element.effects = {};
                this.element.show = function()





                return this.element;

        }}
在函数中,
将引用刚刚创建的新对象。(在上面的示例调用中,它被分配给
myWin

至于'element',它是新创建的对象的属性。直到这一行,它才存在:

var myWin = new Window();

创建新元素并将其DOM表示形式分配给属性。

尝试执行console.log(this)或alert(this)以获取有关“this”的更多详细信息。不要使用alert,请使用console.log,尤其是在Chrome或FireFox(带有FireBug)中,这会提供更详细的输出。警报信息较少。您可以在这些浏览器中看到“控制台”,其中包含F12
this
is
Window
。但是,
show()
内的
this
指的是
show
,而不是
窗口
。除了从函数返回的
this.element
。这似乎破坏了它作为构造函数的功能,因此
myWin
将包含新的div元素,而不是窗口对象。“this.element.modal”、“this.element.width”因为模态和宽度是创建的上一个DIV-DOM元素的属性,所以只起作用。对吗?@Michael-no。构造函数的返回值不会影响
new
调用的返回值。@Oz塞内加尔:您可以在任何javascript对象上创建任何想要的属性。想想
foo.bar=1就像您在另一种语言中分配给散列或数组一样;事实上,在JS中,它与执行
foo['bar']=1相同
this.element = document.createElement("div");