关于js原型的面试题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于js原型的面试题相关的知识,希望对你有一定的参考价值。

今天遇到关于javascript原型的一道面试题,现分析下:

原题如下:

    function A(){

    }

    function B(a){

      this.a = a;

    }

    function C(a){

      if(a){

        this.a = a;

      }

    }

    A.prototype.a = 1;

    B.prototype.a = 1;

    C.prototype.a = 1;

 

    console.log(new A().a);

    console.log(new B().a);

    console.log(new C(2).a);

 

分析:

console.log(new A().a);  //new A()为构造函数创建的对象,本身没有a属性,所以向它的原型去找,发现原型的a属性的属性值为1,故该输出值为1;

 

console.log(new B().a);  //new B()为构造函数创建的对象,该构造函数有参数a,但该对象没有传参,故该输出值为undefined;

 

console.log(new C(2).a);  //new C()为构造函数创建的对象,该构造函数有参数a,且传的实参为2,执行函数内部,发现if为真,执行this.a = 2,故属性a的值为2;

 

故这三个的输出值分别为:1、undefined、2.  

以上是关于关于js原型的面试题的主要内容,如果未能解决你的问题,请参考以下文章

JS面试题

js面试题-----原型和原型链

前端面试题总结二(js原型继承)

从面试题谈谈js的闭包,原型

面试题原型链

JS面试题(进阶)——原型链、this指向、闭包