当我运行时:
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"。为什么呢?
答案 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();