我在Google API JavaScript中看到类似于此代码的内容,我的意思是r =数组部分。以下是他们所做的一个例子:
var r = Array;
var t = new r('sdsd' , 'sdsd');
alert(t[0]);
关于此的几个问题:
提前谢谢。
答案 0 :(得分:3)
这是有效的,因为Array
是一个对象。你可以用任何对象做到这一点。例如,Date
对象:
var d = Date;
console.log((new d()).getTime()); //Prints time
你不能对for
或while
等关键字执行此操作,因为它们是解释程序可识别的语言结构。
您可以使用this
:
document.getElementById("b").onclick = function() {
var x = this; //this holds a reference to the DOM element that was clicked
x.value = "Clicked!";
}
事实上,这有时非常有用(保留对this
的引用,以便您可以从匿名内部函数访问它)。这也有效,因为简单地说,this
将是对象的引用。
答案 1 :(得分:2)
for
- 没有。 this
- 是的。您可以在变量中存储对任何JavaScript对象的引用。 String
,Array
,Object
等是内置于该语言的JavaScript objects。 for
,if
,while
等是JavaScript statements,不能以任何其他方式存储或引用。
你也可以反过来做这件事(并且在这个过程中让自己陷入困境):
Array = 0;
var myArray = new Array("a", "b", "c"); // throws error
这很容易就像这样:
Array = [].constructor;
编辑:在嵌套将在不同范围内执行的函数时,能够将this
的值分配给变量是必不可少的:
function Widget() {
var that = this;
this.IsThis = function() {
return isThis();
};
function isThis() {
return that == this;
}
}
new Widget().IsThis(); // false!
也许不是最好的例子,但说明了失去范围。
您无法重新分配this
:
function doSomething() {
this = 0; // throws error
}