Javascript继承问题

Mis*_*hko 4 javascript inheritance prototypal-inheritance

为什么下面的代码中的版本2不会产生与版本1相同的结果?

function person(name) {
    this.name = name;
}
function student(id, name) {
    this.id = id;
    // Version 1
    //this.inherit_from_person = person;
    //this.inherit_from_person(name);
    // Version 2
    person(name);
}
s = new student(5, 'Misha');
document.write(s.name); // Version 1    =>    Misha
                        // Version 2    =>    undefined
Run Code Online (Sandbox Code Playgroud)

现场演示.

Bor*_*sky 6

当你调用person(name)它时会被this绑定到全局对象进行调用,所以这只是设置window.name = "Misha".您希望person.call(this, name)将其显式绑定到右侧this.