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