js的prototype

function car(brand,money){
    this.brand = brand;
    this.money = money;
    this.info = function(){
        return this.brand + '要卖' + this.money;
        }
     }

为什么说info每次new的时候需要重新定义,而放在car.prototype.info的时候就可以在实例之间共享

请给我详细解释下,我大概知道一些

西兰花伟大炮
浏览 1268回答 1
1回答

两年3900165

1.因为car.prototype指向一个对象,如果你将info扔到car.prototype上的话相当于给这个对象添加了一个info函数。2.然后你new一个car相当于创建一个空的对象,然后将这个对象的proto属性设置为指向car.prototype,实例.__proto__ ===car.prototype3.当你调用实例.info的时候,他会在自身里面先找有没有info函数,没有的话就到实例.__proto__里面找,还找不到就到实例.__proto__.__proto__里面找,一直找到Object.prototype上面看有没有为止。4.如果你将info扔到car.prototype上,那么以后通过这个函数new出来的实例所调用的info函数都是同一个函数,但是不放在car.prototype上的话,每次你new出来的实例调用的info方法都是不同的方法(实例自己的info方法)
打开App,查看更多内容
随时随地看视频慕课网APP