以下代码是否有效语法?

时间:2015-09-17 07:12:02

标签: javascript

当我运行时:

function Person(name) {
   this.name = name;
}

Person.prototype.intro = function () {
   console.log("Hello I am " + this.name);
};

var person = new Person("John");

var intro = person.intro; 
alert(intro());

它会生成一个消息框,简单地说'#34; undefined"。为什么呢?

2 个答案:

答案 0 :(得分:3)

我想你要问:“如果这是一个有效的语法,那为什么它不起作用?”

有效吗?是的
工作?否。

这一行:

var intro = person.intro;

使代码松散this

现在,this是全局窗口对象。

因此您没有看到预期的结果。

答案 1 :(得分:1)

如果您不想将this松散到全局窗口对象,请尝试使用此

function Person(name) {
   this.name = name;
}

Person.prototype.intro = function () {
   console.log("Hello I am " + this.name);
};

var person = new Person("John");

person.intro();