猿问

js构造函数继承的问题?

myfn.b();//0 这个输出结果有点不明白。


function fn() {

    this.a = 0;

    this.b = function() {

        alert(this.a)

    }

}

fn.prototype = {

    b: function() {

        this.a = 20;

        alert(this.a);

    },

    c: function() {

        this.a = 30;

        alert(this.a);

    }

}

var myfn = new fn();

myfn.b();//0

myfn.c();//30


明月笑刀无情
浏览 624回答 2
2回答

婷婷同学_

这是因为实例首先会调用实例方法,在原型链上的b方法没有被调用而导致的。

墨色风雨

楼上的说法正确的。JavaScript继承机制是这样的,如果实例对象自身就有某个属性或方法,它就不会再去原型对象寻找这个属性或方法。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答