JS常见的一些面试题

值类型

 key和value储存在栈中

undefined
String
Number
Boolean
Symbol
*null

例子:

let a = 100
let b = a
a = 200
console.log(b) // 100

引用类型

栈中储存key和内存地址
真正的value储存在堆中

Array
Object
function 

 例子:

let a = {age:20}
let b = a;
//  a的内存地址赋值给b
//  a和b引用同一块内存
b.age = 21
console.log(a.age)// 21

typeOf解构

var d = true;
typeof d   //boolean
var e = {}
typeof e   //object
var f = []
typeof f   //object
var g = null;
typeof g   //object
function fun(){}
typepof fun   //function
class Person(){}
typeof Person   //function

值类型typeof,通常对应值的类型引用类型typeof 对应的object函数与类typeof function

如何来判断js对象类型 

几种判断js对象类型的方法:

typeOf
如果是引用类型无法怕判断是object还是Array

instanceof
原型上是否有该类

Array.isArray
constructor
构造函数

最准确
Object.prototype.toString.call(obj).slice(8,-1);

类型转换 

 字符串拼接

字符串用的符号是 +
任意类型与字符串 拼接都会变成字符串

100+"10"   10010
true+"100"  true100

数字元素

"100" * 10 = 1000
true * 10 = 10

true转换为1 false转换为0
字符串能转为数字,转换失败为NaN 

布尔逻辑 

> < == != && ||
true&&15   //15
数字:除0都是true
字符串:除空都是true

falsely变量

false
NaN
null
undefined
""
0

逻辑赋值

 &&
前为falsely变量 值为前
否则值为后
||
前面为truely变量值为前
否则为后

继承 

ES6新增class继承

class extends

class  Student.extends Person{}

 原型继承

function Student(name,age){
    Person.call(this,name)
}
Student.prototype = Object.create(Person.prototype);
Student.prototype.constuctor = Student

原型与原型链

每一个类都有一个显示原型prototype
每一个类的实例都有有个隐式原型_proto_实例的_proto_等于类的显示原型prototype
当去查找一个实例的属性或方法先在自身查找,找不到则沿着_proto_向上查找
我们把原型_proto_与原型_proto_形成链条关系叫做原型链

原型链作用。
01实现了js的继承
02让实例拥有的类公用方法

 对象冒充

 call

call 执行一个方法,call的第一个参数为方法的this
fn1.call(obj,n1,n2)
执行fn1方法,并用obj去冒充fn1的this

apply 

apply与bind一致需要用数组传参
fn1.apply(obj,[n1,n2])

bind 

返回一个新的方法 

Object.create 

let obj2 = Object.create(obj1)
从obj1创建一个新的对象obj2
并把obj1的属性和方法挂载到obj2的原型上 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值