猿问

原型链问题 求大神

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();

myfn.c();

构造函数和原型里面同样有方法b 变量为什么只有在构造函数里面有效?


慕的地10843
浏览 471回答 1
1回答

12345678_0001

因为对象 obj 属性查找的规则是:先在对象 obj 上查找,找到则直接返回该属性,结束查找在对象的原型 obj.__propo__ 上查找,找到则直接返回该属性,结束查找在原型的原型(原型链)上查找,找到则直接返回该属性,结束查找重复第3步,直到原型指向null,结束查找,返回undefined具体这个问题:myfn.b在对象属性上找到了,不需要去原型链上查找。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答