Object原型对象和Function原型对象

    var Person = function() {};

    Object.prototype.a = 'A'

    Function.prototype.b = 'B'

    var p = new Person();    
    console.log(p.a);//A
    console.log(p.b);//undefined复制代码

问为什么?

有不少同学第一眼看上去就觉得很疑惑,p不是应该继承了Function原型里面的属性吗,为什么p.b返回是undefined呢?

其实,只要仔细想一想就很容易明白了,Person函数才是Function对象的一个实例,所以通过Person.a可以访问到Function原型里面的属性,但是new Person()返回来的是一个对象,它是Object的一个实例,是没有继承Function的,所以无法访问Function原型里面的属性。但是,由于在js里面所有对象都是Object的实例,所以,Person函数可以访问到Object原型里面的
属性,Person.b => 'b'。

转载于:https://juejin.im/post/5c7b8fb46fb9a04a082265eb

你可能感兴趣的:(Object原型对象和Function原型对象)