zoukankan      html  css  js  c++  java
  • 关于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.  

  • 相关阅读:
    迭代器与生成器
    11.30
    函数及装饰器
    C#For循环
    C#变量与数据类型
    C#输入输出
    JDK10新特性--var
    idea插件Lombok使用
    NodeJs操作文件-写入、修改、删除、追加、读取文件内容、判断文件是否存在
    mongodb多条件分页查询(mongoTemplate分页查询)
  • 原文地址:https://www.cnblogs.com/momo798/p/5903921.html
Copyright © 2011-2022 走看看