说一下javascript中this的用法

2009年11月21日 01:28 阅读 35 web开发 JavaScript 前端

通常情况下, this代表的是前面提到的Globle Object.也就是Browser环境时的window Object. 当function作为某一对象的 method 时, this 代表这个 function 所属的 object. 下面这段代码有格错误, 涉及到this的使用:

function Employee(a) {
this.name = a;
}

function init(){
John = Employee(“Johnson”);
alert(John.name);
}

在init()中我们少了一个new keyword. 于是这个代码就会报错, 因为Browser把Employee当作是window obect的一个method, 里面的this指的就是window object. init()应该改为:

function init(){
John = new Employee(“Johnson”);
alert(John.name);
}

同时我们也可以将Employee的constructor函数修改, 防止类似的错误:

function Employee(a) {
if (!(this instanceof Employee)) return new Employee(a);
this.name = a;
}

这样,我们即使使用原来的init()方法, 也不会报错了.

还没有评论!