JavaScript官方关键字快捷键

时间:2011-10-20 22:03:25

标签: javascript

我在Google API JavaScript中看到类似于此代码的内容,我的意思是r =数组部分。以下是他们所做的一个例子:

var r = Array;
var t = new r('sdsd' , 'sdsd');
alert(t[0]);

关于此的几个问题:

  1. 这样写是否合法,不会造成任何问题?
  2. 我可以使用其他关键字做类似的事情,例如'For'循环或使用'this'关键字?
  3. 我可否有关于此JavaScript官方关键字快捷方式等的文章。?
  4. 提前谢谢。

2 个答案:

答案 0 :(得分:3)

这是有效的,因为Array是一个对象。你可以用任何对象做到这一点。例如,Date对象:

var d = Date;
console.log((new d()).getTime()); //Prints time

不能forwhile等关键字执行此操作,因为它们是解释程序可识别的语言结构。

您可以使用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)

  1. for - 没有。 this - 是的。
  2. 您可以在变量中存储对任何JavaScript对象的引用。 StringArrayObject等是内置于该语言的JavaScript objectsforifwhile等是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
    }