js基础面试题

js数据类型

1.基本数据类型:Number(数字)、String(字符串)、Boolean(布尔)、Null(空)、Undefined(未定义)
2.复合数据类型:Array(数组)、Object(对象)、Function(函数)
3.强制转换数据类型
Number()转换为数字
String()转换为字符串
Boolean()转换为布尔值
4.隐式转换数据类型
+字符串连接符号 (隐式转换为字符串)、数学运算 (隐式转换为数字)、比较与逻辑运算符(隐式转换为布尔值)、null NaN undefined 0 转换为false

浅拷贝

Object.assign(A,B)
for in遍历拷贝
{…A}对象扩展

深拷贝

1.转字符串
JSON.parse(JSON.stringify(数据)) json数据类只支持 布尔,字符串,数字 null,undefined array object 会忽略函数 等其他类型数据
2.递归

function deeCopy(obj){
    if(typeof obj==="object"&&obj!==null){
      var result;
      if(obj.instanceof Array){
         result = [];
         for(var i=0;i<obj.length;i++){
               result[i] = deepCopy(obj[i])
         }
      }else{
         result = {};
         for(var k in obj){
             result[k] = deepCopy(obj[k])
         }
      }
      return result;
    }else {
        return obj;
    }
}

逻辑与条件

1.if条件判断
if判断只要求()内表达式结果是否为truly变量
falsely 变量 对变量取两次反 !! 得到结果为false的变量成为falseLy变量
除了falsely变量其他都为truely变量
2.逻辑或 (||)
如果前面的变量为truely 最终结果为第一个 如果为falselyj结果为第二个
3.逻辑且 (&&)
&&前面是truely变量则返回后面的值,前面是falsely变量直接使用前面的值
在逻辑判断中 &&前面的值为falsely后面的不执行 前面为truly则看后面&&后面的值
if(obj&&obj.abc&&obj.abc.len)可以写为if(obj?.abc?.len) es7新语法

原型,原型链

什么是原型、原型链

每个构造函数(class)都有一个显示的原型prototype
每个实例对象都有个隐私原型__proto__
实例的隐式原型__proto__等于其构造函数的显示原型protype
当查找一个对象的属性或方法时先在实例上查找,找不这沿着__proto__向上逐级查找
我们把__proto__的__proto__形成的链条关系成为原型链

在这里插入图片描述
原型链图解
在这里插入图片描述
原型链代码详解

function Fn() {
	this.test1 = function(){
		console.log('test1()')
	}
}
Fn.prototype.test2 = function(){
	console.log('test2()')
}

var fn = new Fn()

fn.test1()
fn.test2()
console.log(fn.toString())
原型链的作用

1.原型链实现了js继承
2.原型可以给构造函数创建的实例添加公用方法

实例方法拓展

数组求最大最小值
数组Array的实例都拥有最大最小值方法,把自定义方法挂载到类的原型上

Array.prototype.max=function(){
// this就是当前数组,展开求最大值
	return Math.max(...this)
}//所有数组将拥有max方法
Array.prototype.min=function(){
	return Math.min(...this)
}//所有数组将拥有min方法

字符串反转

String.prototype.reverse=function(){
	return this.split("").reverse().join("");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值