29、使用箭头函数(arrow functions)的优点是什么 30、为什么建议传递给 setState 的参数是一个 callback 而不是一个对象 31、 (在构造函数中)调用 **super(...props)** 的目的是什么 32、 React的工作原理 33、除了在构造函数中绑定 this ,还有其它方式吗 34、 何为 Children 35、 什么是属性代理 一、react篇 1、react...的更新可能是异步的,不能依赖它们的值去计算下一个 state 6、(在构造函数中)调用 super(props) 的目的是什么 在 super() 被调用之前,子类是不能使用 this 的,在...是未定义的;如果函数被称为“对象方法”,则为基 础对象等),但箭头函数不会,它会使用封闭执行上下文的 this 值。...31、 (在构造函数中)调用 super(props) 的目的是什么 在 super() 被调用之前,子类是不能使用 this 的,在 ES2015 中,子类必须在 constructor 中调 用 super
JavaScript 中的对象可以使用对象字面量、构造函数或 ECMAScript 6 中引入的类语法来创建。 11. JavaScript 中的 bind() 方法的用途是什么?...bind() 方法创建一个新函数,在调用时具有指定的 this 值和传递给它的参数。 12. 在 JavaScript 中循环遍历数组有哪些不同的方法?...JavaScript 中的回调函数是什么? 回调函数是作为参数传递给另一个函数并在稍后或特定事件发生后执行的函数。 25. JavaScript 中 JSON.parse() 方法的用途是什么?...如何在 JavaScript 中将字符串转换为小写? 你可以使用 toLowerCase() 方法将字符串转换为小写。 34. JavaScript 中的闭包是什么,为什么有用?...回调函数是作为参数传递给另一个函数并在该函数内部调用的函数。一个示例是 setTimeout() 函数,你可以在其中传递一个回调函数以在一定延迟后执行。 43.
一:抽象类与虚方法 虚方法是类成员中的概念,是只做了一个声明而未实现的方法,具有虚方法的类就称之为抽象类,这些虚方法在派生类中才被实现。...抽象类是不能实例化的,因为其中的虚方法并不是一个完整的函数,不能被调用。所以抽象类一般只作为基类被派生以后再使用。 和类的继承一样,JavaScript并没有任何机制用于支持抽象类。...但利用JavaScript语言本身的性质,可以实现自己的抽象类。 二: 在JavaScript实现抽象类 在传统面向对象语言中,抽象类中的虚方法必须先被声明,但可以在其他方法中被调用。...当然,如果希望在基类中添加虚方法的一个定义,也是可以的,只要在派生类中覆盖此方法即可。...但实际上可以把Class.create()返回的类看作所有类的共同基类,它在构造函数中调用了一个虚方法initialize,所有继承于它的类都必须实现这个方法,完成构造函数的功能。
想要从根源上解决问题,需要使用C++官方提供的一个新的功能——虚基类。 虚基类可以使得从多个类派生出的对象只继承一个基类对象,要使用虚基类,需要在类声明当中使用关键字virtual。...使用了虚基类之后,一些语法会和之前有所不同,接下来我们来详细介绍。 构造函数 对于非虚基类的继承关系来说,我们可以在构造函数当中将数据传递给基类。...为了避免这种冲突,C++在基类是虚时,禁止数据通过中间类传递给虚基类,因此上述代码中的wk参数将会失效。在这种情况下,编译器会调用Worker的默认构造函数。...Waiter(wk, p), Singer(wk, v) {} 需要注意的是,这种写法只在虚基类时是合法的,其他情况是非法的。...怎么解决呢,一个方法是使用作用域解析符: sw.Singer::show(); 但显然这种做法非常麻烦,更好一点的做法是在SingingWaiter中重新定义show函数,在函数内部指出要调用哪个show
JavaScript是一种OOP脚本语言, 代码只在浏览器上运行, JS代码都是文本的形式。...问题3: JS 支持哪些数据类型 JS 支持的数据类型: Undefined Null Boolean String Symbol Number Object 问题4:JavaScript的特性是什么...一个匿名函数可以分配给一个变量,它也可以作为参数传递给另一个函数。 问题11:JS中的参数对象是什么&如何获得传递给函数的参数类型 JS 变量arguments表示传递给函数的参数。...在方法中,这指的是所有者对象,而在函数中,这指的是全局对象。 问题14:什么是回调 回调函数是作为参数或选项传递给某个方法的普通JS函数。它是一个函数,在另一个函数完成执行后执行,因此称为回调。...问题 37:如何在JS中将任意基的字符串转换为整数 parseInt(string, radix) 将一个字符串 string 转换为 radix 进制的整数, radix 为介于2-36之间的数,如下
Server.Transfer:通过服务器端重定向传值。 优点:可以将与最初请求相关的所有数据传递给重定向的页面。 缺点:资源消耗比较大。...Web 应用程序是无状态的。每次从服务器请求网页时,都会创建网页类的一个新实例。这通常意味着在每次往返过程中将会丢失所有与该页面及其控件关联的信息。...方法的override和overload有什么区别? 重写(override):子类对基类中的虚成员(虚方法、虚属性等)或抽象成员(抽象方法、抽象属性等)进行覆盖,重新实现。...不能被继承,也不能被重写,但是在创建类的实例时会首先调用其基类的无参数构造函数。 C#中,运算符“?”和“??”的区别是什么? ?是和:结合在一起使用的,?...2) 用于创建匿名类型的实例。 3) 在用作修饰符时,new 关键字可以显式隐藏从基类继承的成员。 C#中,ref和out在修饰方法参数时有什么区别?
条款14: 确定基类有虚析构函数 基类指针指向具体派生类,delete基类指针的时候,需要虚函数进行多态。...小tip:如果析构函数不是虚的,那么基类和派生类的析构都要调用 ,先调用派生,再调用基类 tip2:虚函数要占用class空间,要综合考量 条款15: 让operator=返回*this的引用...正如我在本书的导言中所指出的,“通过值来传递一个对象”的具体含义是由这个对象的类的拷贝构造函数定义的。这使得传值成为一种非常昂贵的操作。...如果类D私有继承于类B,类型D的对象只不过是用类型B的对象来实现而已;类型B和类型D的对象之间不存在概念上的关系 如果是私有继承,编译器不会隐式的将子类对象转化成基类对象 私有继承,基类所有函数在子类都变成私有属性...(而这在设计祖先类的时候一般是无法预料到的) 可以通过public继承方式继承接口,private继承方式继承实现,来完成目的 条款44: 说你想说的;理解你所说的 条款45: 弄清C++在幕后为你所写
JS 支持的数据类型: Undefined Null Boolean String Symbol Number Object 问题4:JavaScript的特性是什么 ?...一个匿名函数可以分配给一个变量,它也可以作为参数传递给另一个函数。 问题11:JS中的参数对象是什么&如何获得传递给函数的参数类型 JS 变量arguments表示传递给函数的参数。...在方法中,这指的是所有者对象,而在函数中,这指的是全局对象。 问题14:什么是回调 回调函数是作为参数或选项传递给某个方法的普通JS函数。它是一个函数,在另一个函数完成执行后执行,因此称为回调。...问题25:在JS中定义变量的方法有哪些 在 JS 中声明变量有三种方式: var – var 语句用于声明一个变量,咱们可以选择初始化该变量的值。...问题 37:如何在JS中将任意基的字符串转换为整数 parseInt(string, radix) 将一个字符串 string 转换为 radix 进制的整数, radix 为介于2-36之间的数,
本文讲述JavaScript中类继承的实现方式,并比较实现方式的差异。 一、何为继承 继承,是子类继承父类的特征和行为,使得子类对象具有父类的实例域和方法。 继承是面向对象编程中,不可或缺的一部分。...但是,在实例化的时候,已经分配了内存。所以,在一定程度上影响程序性能。 二、例子 例子以图书馆中的书入库归类为例。 以下是简化后的父类Book(也可称为基类)。...目的是通过继承该父类,产出Computer(计算机)子类。 并且,子类拥有新方法say,输出自己的书名。...3.2 将父类的原型传递给子类 Computer.prototype = new Book();使用new操作符对父类Book进行实例化,并将实例对象赋值给子类的prototype。...父类实例化无法传参 Computer.prototype = new Book();,这种实例化方式,无法让Book父类接收不固定的参数集合。
作为ref传递的参数必须在传递给方法之前进行初始化,而out参数在传递给方法之前无需进行初始化。 10、C#中“ using”语句的用途是什么?...用户控件不能放置在工具箱中并从中拖放。他们有自己的设计和代码背后。用户控件的文件扩展名为ascx。 17、 C#中的密封类是什么? 当我们想限制继承的类时,我们创建密封的类。...密封的修饰符,用于防止从类派生。如果我们强制将密封类指定为基类,则会发生编译时错误。 18、什么是方法重载? 方法重载是在同一个类中创建多个具有相同名称且具有唯一签名的方法。...委托是必需的,因为它们可用于编写更多通用的类型安全函数。 34、如何在C#中将一个类继承到其他类? 冒号在C#中用作继承运算符。只需放置一个冒号,然后放置类名。...公共类DerivedClass:BaseClass 35、.net中的基类是什么,所有类都源自该基类? System.Object 36、方法重载和方法重载之间有什么区别?
只要不再将max与undefined 的值进行比较,就可以了 混合类 TypeScript 的一个目的是支持不同框架和库中使用的通用 JS 模式。...JavaScript/TypeScript中的 mixin 混合类是实现不同功能方面的类。其他类可以包含 mixin 并访问它的方法和属性。这样,mixin 提供了一种基于组合行为的代码重用形式。...混合类的构造函数 (如果有) 必须有且仅有一个类型为any[]的变长参数, 并且必须使用展开运算符在super(...args)调用中将这些参数传递。 定义完成之后,来研究一些代码。...在函数体中,咱们创建并返回一个派生自Base的新类。这种语法乍一看可能有点奇怪。咱们创建的是类表达式,而不是类声明,后者是定义类的更常用方法。...继承多个基类在 JS 中不行的,因此在 TypeScript中也不行。
protected internal :内部受保护的,同一个程序集里面的任何位置,或者不同程序集中的派生类可以访问。 备注: 父类=基类 子类=派生类 面向对象的三大特征是什么?... 不能被继承,也不能被重写,但是在创建类的实例时会首先调用其基类的无参数构造函数。 C#中,运算符“?”和“??”的区别是什么? ?是和:结合在一起使用的,?...2) 用于创建匿名类型的实例。 3) 在用作修饰符时,new 关键字可以显式隐藏从基类继承的成员。 C#中,ref和out在修饰方法参数时有什么区别?... Server.Transfer:通过服务器端重定向传值。 优点:可以将与最初请求相关的所有数据传递给重定向的页面。 缺点:资源消耗比较大。 什么是“Code-Behind”技术?... Web 应用程序是无状态的。每次从服务器请求网页时,都会创建网页类的一个新实例。这通常意味着在每次往返过程中将会丢失所有与该页面及其控件关联的信息。
区分层次的目的即为了“高内聚,低耦合”的思想。 表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候的所见所得。...new 修饰符 用于向基类成员隐藏继承成员。 new 约束 用于在泛型声明中约束可能用作类型参数的参数的类型。...答案:子类重新定义父类的某一个方法时,必须把父类的方法定义为virtual 在定义接口中不能有方法体,虚方法可以。 实现时,子类可以不重新定义虚方法,但如果一个类继承接口,那必须实现这个接口。...(3).下列描述错误的是(D) a)类不可以多重继承而接口可以; b)抽象类自身可以定义成员而接口不可以; c)抽象类和接口都不能被实例化; d)一个类可以有多个基类和多个基接口; 57、DataReader...value,它的类型和属性所声名的类型相同。 60、C#支持多重继承么? 类之间不支持,接口之间支持。类对接口叫做实现,不叫继承。 61、C#中所有对象共同的基类是什么?
这为创建一常动态的代码基打开了大门,在这个代码基础上,可以直接将复杂行为作为参数传递来重用它。 想象一下,在纯面向对象的环境中工作,你想扩展类的功能,以完成任务。...在这种情况下,你可能会使用继承,方法是将该实现逻辑封装在一个抽象类中,然后将其扩展为一组实现类。...,然后将该函数作为参数传递给任何其他函数,这种方法,可以少省去一些创建“样板”过程,因为,我们只是在创建函数。...这种方法很有效,而且相对容易理解,然而,这种逻辑的复杂性会随着项目的复杂程度上升而上升,认知负荷也会随之增加。...你也可以在第一个示例中将乘法逻辑隐藏在函数内部,但是遍历逻辑必须存在,这就增加了一些不必要的阅读阻碍。
如果原先实现的时候,我们的JavaScript代码中的屏幕判断是基于CSS传参的话,那就不会有这样子的维护问题出现。 2....浏览器是否支持:hover伪类交互 我们会开发一些ui组件,希望在桌面端和移动端,以及物联网设备上通用。...因此,最后的方法还是通过CSS媒体查询判断,然后把这个判断结果以参数形式传递给js。 好啦,下面问题来了,上面举了这三个案例,我们如何通过CSS把我们的参数传递给JS代码呢?...二、CSS传参给JS的方法 通常借助CSS向JS传参,我都是使用下面这两种方法。...因此,综合来看,使用CSS自定义属性传参在黑暗模式这个场景中是最佳的实现。但是,如果是基于设备宽度传参响应式布局这场场景,还是使用CSS content属性传参为佳。
如果改变了 Student 就会改变 Person 2 可以实现继承,但是其调用了构造函数,若父类构造函数中有形参,那么传值就会比较奇怪。 3 是最好的方法。...this.className = className; Person.call(this, name); // 调用基类的构造器 } var gao = new Student('Gao',...Person.prototype.init.apply(this, arguments); // 同时也想调用父类被覆盖的方法 }; 主要是两种:调用父类的构造器,调用原型链上父类被覆盖的方法。...返回这个 ClassManager 的实例。这样这个实例又可以继续调用方法。 ---- 抽象类 在构造器中 throw new Error(''); 抛异常。这样防止这个类被直接调用。...已经在原课程下提问了,期待老师的讲解。 抽象类中子类为什么不能调用父类的非抽象方法? 问题已经解决了,应该是老师当时的课件写错了,应该再基类中将这两个方法写在其原型 prototype 上。
只要不再将max与undefined 的值进行比较,就可以了 混合类 TypeScript 的一个目的是支持不同框架和库中使用的通用 JS 模式。...JavaScript/TypeScript中的 mixin 混合类是实现不同功能方面的类。其他类可以包含 mixin 并访问它的方法和属性。这样,mixin 提供了一种基于组合行为的代码重用形式。...混合类的构造函数 (如果有) 必须有且仅有一个类型为any[]的变长参数, 并且必须使用展开运算符在super(...args)调用中将这些参数传递。 定义完成之后,来研究一些代码。...在函数体中,咱们创建并返回一个派生自Base的新类。这种语法乍一看可能有点奇怪。咱们创建的是类表达式,而不是类声明,后者是定义类的更常用方法。...编译器可以类型检查所有的使用,并在自动完成列表中建议可用的成员: 与类继承进行对比,有个区别:一个类只能有一个基类。继承多个基类在 JS 中不行的,因此在 TypeScript中也不行。
我们不需要再重复DB(文件)的逻辑,可以把任何实体(音乐、图片)传递给DB类,类会将他们保存到DB。 - 代码可读性更好,逻辑更简单。...这个原则是指:客户端不应该依赖他们不使用的接口(接口应该是精简的,拥有尽可能少的行为)。 这是什么意思? 这个原则是关于接口的,但是在JavaScript中没有接口,不过有类似的东西,那就是类。...基类包含了move和stop两个方法,这两个方法可以用在所有的子类。...这就是“SOLID”原则中“I”的含义:这个原则主要的目的是让代码拥有良好的层次结构,尽量不要在基类中创建子类不需要的方法。...一个类在应用的其他地方已经开始使用,就不应该再修改它。 3、里氏替换原则(LSP):派生的子类应该是可替换基类的,也就是说任何基类可以出现的地方,都可以被子类替换。
对虚拟 DOM 的理解?虚拟 DOM 主要做了什么?虚拟 DOM 本身是什么?从本质上来说,Virtual Dom是一个JavaScript对象,通过对象的方式来表示DOM结构。...参考 前端进阶面试题详细解答hooks父子传值父传子在父组件中用useState声明数据 const [ data, setData ] = useState(false)把数据传递给子组件子组件接收export default function (props) { const { data } = props console.log(data)}子传父子传父可以通过事件方法传值...容器组件经常是有状态的,因为它们是(其它组件的)数据源。React 性能优化在哪个生命周期?它优化的原理是什么?react的父级组件的render函数重新渲染会引起子组件的render方法的重新渲染。...在 React 中,refs 的作用是什么Refs 可以用于获取一个 DOM 节点或者 React 组件的引用。
在继承种构成多态要满足两个条件: 必须通过基类的指针或者引用调用虚函数(该指针或者引用操作的是派生类种基类的那一部分内容) 被调用的函数必须是虚函数,且派生类必须对虚函数进行重写。...2.接口继承和实现继承 普通类的继承是实现继承,派生类继承了基类,可以使用基类的函数;虚函数的继承是一种接口继承,派生类继承基类目的是为了重写,达成多态,继承的是接口。...总结一下派生类虚表的形成: 基类的虚函数直接进派生类的虚表; 基类的虚函数如果在派生类中被重写,就将重写后的虚函数覆盖基类的虚函数; 派生类自己的虚函数,按照其在派生类中声明顺序依次增加在虚表的最后;...,这是因为基类调用函数的传参基类对象,而派生类对象调用函数时的传参是派生类对象中基类的那一部分。...导致基类的指针p是调用基类的成员函数,派生类的指针p是调用派生类的成员函数。 简单来说: 普通函数调用是传谁调用谁; 符合多态的函数调用就是指向谁调用谁。
领取专属 10元无门槛券
手把手带您无忧上云