Javascript 为什么到原型的链接丢失了?

Javascript 为什么到原型的链接丢失了?,javascript,Javascript,为什么一种模式有效而另一种模式无效?在第二个代码中,到原型的链接丢失了,是否有任何方法可以使用第二个模式建立到原型的链接?或者我做错了吗 这很有效 function Robot() { this.weapons=5; this.lives=5; } Robot.prototype.fireWeapon=function(){alert('weapons fired');}; var a=new Robot(); a.fireWeapon(); 这不管用 function R

为什么一种模式有效而另一种模式无效?在第二个代码中,到原型的链接丢失了,是否有任何方法可以使用第二个模式建立到原型的链接?或者我做错了吗

这很有效

function Robot() {
    this.weapons=5;
    this.lives=5;
}

Robot.prototype.fireWeapon=function(){alert('weapons fired');};

var a=new Robot();
a.fireWeapon();
这不管用

function Robot() {

    var weapons=5;
    var lives=10;

    return {
        weapons: weapons,
        lives : lives
    };
}

Robot.prototype.fireWeapon=function(){alert('weapons fired');};

var a=new Robot();
a.fireWeapon();

javascript类不应该返回任何东西

如果它是,那么它等于它返回的任何东西,它不是一个原型类


查看两个函数的日志:

这是因为在第二个示例中,您没有
机器人,而是有一个
对象

通过返回一个新的匿名对象,可以覆盖默认情况下分配给
a
的表达式,即
Robot

在每一行中尝试这一行,您将看到:

alert(a.constructor);
对于第一个,您将看到
对象
,第二个,您将看到
机器人
功能