首页 > 其他分享 >JS 面试题: 将class转为function

JS 面试题: 将class转为function

时间:2024-01-28 16:12:43浏览次数:18  
标签:function 面试题 调用 console log Person var new class

 关于类-需知知识点:

  1、ES6 提供了更接近传统语言的写法,引入了 Class(类)这个概念,作为对象的模板。通过class关键字,可以定义类

  基本上,ES6 的class可以看作只是一个语法糖,它的绝大部分功能,ES5 都可以做到,新的class写法只是让对象原型的写法更加清晰、更像面向对象编程的语法而已。

  2、类的所有方法都定义在类的prototype属性上面。

  3、ES6 的类,完全可以看作构造函数的另一种写法。

  1. class Point {
  2. // ...
  3. }
  4. typeof Point // "function"
  5. Point === Point.prototype.constructor // true

关于new-需知知识点:

  1、通过use strict普通调用时严格模式下this指向undefined,赋值操作会报错,new调用时this指向实例对象。

var Person = function () {
  'use strict';
  try {
    this.name = 'BabyChin';
    console.log('new调用');
  } catch (e) {
    console.log('普通调用');
  }
}
var p1 = new Person(); // new调用
var p2 = Person(); // 普通调用

  2、通过instanceof普通调用时this指向全局对象new调用时this指向实例对象

var Person = function () {
  if (this instanceof Person) {
    console.log('new调用');
  } else {
    console.log('普通调用');
  }
}
var p1 = new Person(); // new调用
var p2 = Person(); // 普通调用

  3、通过constructor普通调用时constructor指向全局对象new调用时constructor指向构造函数本身

var Person = function () {
  if (this.constructor === Person) {
    console.log('new调用');
  } else {
    console.log('普通调用');
  }
}
var p1 = new Person(); // new调用
var p2 = Person(); // 普通调用

  4、通过new.target普通调用时target默认指向undefinednew调用时target指向Person的实例对象。

var Person = function () {
  if (new.target === Person) {
    console.log('new调用');
  } else {
    console.log('普通调用');
  }
}
var p1 = new Person(); // new调用
var p2 = Person(); // 普通调用

 

标签:function,面试题,调用,console,log,Person,var,new,class
From: https://www.cnblogs.com/caihongmin/p/17992962

相关文章

  • [职场] 面试题:Java语言技术的应用有哪些?
    小伙伴们面试时,特别是和代码相关的岗位,面试时可能会遇见关于Java语言技术的应用这个问题,那么我们应该如何作答呢?一起来看看答案吧!答案:1、Android,应用许多的Android,应用都是Java程序员开发者开发。虽然Androidi运用了不同的JVMl以及不同的封装方式,但是代码还是用Java语言所编写。......
  • CLASS
    #include<bits/stdc++.h>#include"hxy.h"usingnamespacestd;intmain(){fxh;h.set();h.get();return0;}#include<bits/stdc++.h>usingnamespacestd;classfx{private:intCnt=10;intli......
  • C# .NET 中 LINQ to Entities查询中使用时转换为数据库函数的CLR方法(EF.Functions)
    EF.Functions映射由于并非所有数据库函数都有等效的C#函数,因此EFCore提供程序提供了特殊的C#方法来调用某些数据库函数。这些方法通过EF.Functions定义为扩展方法来用于LINQ查询中。这些方法是特定于提供程序的,因为它们与特定数据库函数密切相关。因此,适用于某个......
  • [职场] 互联网行业的技术面试题以及解析
    互联网行业是这几年的热门行业,很多小伙伴都想要进入互联网行业,今天小编给大家分享一些渝新欧额关于互联网行业的技术面试题以及解析。1、什么是服务注册服务提供者在启动时,会向EurekaServer发送一次情求,将自己注册到Eureka注册中心中去。2、什么是服务续约在注册服务完成以后,服务提......
  • [职场] 教师招考结构化面试题及答案
    教师招考结构化面试是选拔优秀教师的重要环节,通过对面试者的专业知识、教育教学能力、沟通协作能力等方面的考查,选拔出具备优秀潜质的教师。本文将针对教师招考结构化面试中的常见问题进行梳理,并提供参考答案,以帮助您更好地应对面试。一、专业知识类问题1.请简述我国教育的基本任......
  • 无涯教程-Scala - Partially Applied Functions函数
    调用函数时,据说是将函数应用于参数。如果传递所有期望的参数,则说明已完全应用了它。如果仅发送几个参数,则将返回部分应用的函数。这使您可以方便地绑定一些参数,并在以后填充其余参数。尝试以下操作,它是显示部分应用功能的简单示例程序-例importjava.util.Dateobject......
  • 无涯教程-Scala - Currying Functions函数
    Currying将一个包含多个参数的函数转换为一个函数链,每个函数都包含一个参数。咖喱函数定义了多个参数列表,如下所示-语法defstrcat(s1:String)(s2:String)=s1+s2另外,您也可以使用以下语法来定义咖喱函数-语法defstrcat(s1:String)=(s2:String)=>s1+s2......
  • Unity面试题:热更新篇(一)
    请简要介绍Unity热更新的原理和实现方式。答:Unity热更新的原理是通过将游戏的资源和代码分离,将代码部分放置在服务器端,游戏启动时通过网络下载更新的代码并动态加载,以达到实现热更新的目的。实现方式包括AssetBundle、ILRuntime等。对啦!这里有个游戏开发交流小组里面聚集了一帮热......
  • class
    1#include<iostream>2usingnamespacestd;3classBox{4private:5doublelength;6doublewidth;7public:8voidsetLength(doublelength);9voidsetWidth(doublewidth);10doublegetLe......
  • class
    #include<iostream>usingnamespacestd;classBox{ private: doublelength; doublewidth; public: voidsetLength(doublelength); voidsetWidth(doublewidth); doublegetLength(); doublegetWidth(); doublegetArea();};voidBox::setLen......