前端面试问题

几个前端面试问题,供大家参考

1、js中原型与原型链的区别prototype 和 proto 区别是什么

  • prototype是构造函数的属性
  • __proto__是每个实例都有的属性,可以访问 [[prototype]] 属性
  • 实例的__proto__与其构造函数的prototype指向的是同一个对象

原型是为了实现对象间的联系,解决构造函数无法数据共享而引入的一个属性,而原型链是一个实现对象间联系即继承的主要方法

2、深复制与浅复制的区别

注:深浅拷贝的区别只适用于Array与Object这样的复杂对象。

1、浅拷贝:只是复制了原数据的内存地址,相当于两个数据指针指向了相同的地址,其中任一数据元素发生改变,会影响另一个。

2、深拷贝:两个数据指向了不同的地址,数据元素发生改变时不会相互影响。

3、如何确定数组对象的类型

1、Array.prototype.isPrototypeOf(obj);        //返回true 或者false

2、obj instanceof Array                               //返回true 或者false

3、Array.isArray(要判断的对象)                  //返回true 或者false

4、如何防止前端不停的向后端发起请求?例如不停的搜索不同的内容。

1、增加状态标记,在服务器返回消息后,修改状态,让用户进行其他请求

2、利用Axios 进行重复请求的判断  如何取消axios的重复请求_万物之恋的博客-CSDN博客_axios取消重复请求

5、字符串如何倒序?

第一种

let str = "i am good man";
let newStr = str.split('').reverse().join("");
console.log(newStr)

首先将字符串转为数组,再反转数组,最后将数组转为字符串

split("") ------根据字符串拆分数组
reverse()------数组反转元素位置
join("")-------数组转回字符串,不带分隔符


第二种
定义新的空字符串,遍历str,charAt() 是提取字符串的一个字符,先去最后一个字符,再取第二个,依次取,将取到的结果都放到新的字符前面,以此来实现倒序

let str = "i am good man ";
let newStr = "";
for(let i = 0;i<str.length;i++){
    let s = str.charAt(str.length-i-1)
    newStr += s;
}
console.log(newStr)//nam doog ma i
//从尾部开始遍历字符串,然后逐个拼接字符,得到最终的结果。

6、什么是构造函数?

构造函数 ,是一种特殊的方法。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。
构造:它是设计,组合。将没有的东西先概念实现,比如建筑图纸
构造函数:首先,它是函数,并且任何的函数都可以作为构造函数存在它的本质是初始化对象。构造函数都是和new 关键词一起使用的。 new就是在创建对象,从无到有,构造函数就是在为初始化的对象添加属性和方法( 成员 )

7、如何优化前端?

8、css中的加号+ 是在什么时候使用的?

加号又被称作兄弟选择器。A+B表示选择紧邻在A后面的B元素,且A和B必须拥有相同的父元素,所选到的仅为一个B元素标签。

<style>
        h3+h5{
            color: red;
        }
</style>

<body>
    <div>
        <h1>我是第1行</h1>
        <h2>我是第2行</h2>
        <div>
            <h3>我是第3行</h3>
            <h5>我是测试行</h5>
            <h4>我是第6行</h4>
            <h5>我是测试行</h5>
        </div>
        <h4>我是第4行</h4>
        <h5>我是第5行</h5>
    </div>
</body>

在这里插入图片描述

 

9、什么是伪元素?

CSS 伪元素用于设置元素指定部分的样式。

例如,它可用于:

  • 设置元素的首字母、首行的样式
  • 在元素的内容之前或之后插入内容
  • 伪元素的语法:
    selector::pseudo-element {
      property: value;
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值