1、js基础知识点

2018-12-27  本文已影响0人  _daraDu

1、原始类型(基本类型)有哪些?null是对象吗?

number、string、null、undefined、Boolean、symbol(ES6新增)
原始类型储存的是值,是没有函数可以调用的。'1'.tostring()做了隐式转换,转换为了String类型,就是字符串的对象包装类型,所以可以调用tostring()函数

null不是对象,虽然typeof null 会输出object,但是这是js的一个悠久bug。在js最初版本中使用的是32位系统,为了性能考虑使用低位储存变量的类型信息,000开头的是对象。而null表示为全零,所以将它错误的判断为object。虽然现在的内部类型代码判断已经改变,但是这个bug一直流传下来

2、对象类型(引用类型)与原始类型有什么区别?函数参数是对象会发生什么问题?

对象类型储存的是个地址,原始类型储存的是值

3、typeof 是否能正确判断类型?instanceof 能正确判断对象的原理是什么?

typeof能判断除null之外的所有基本类型
instanceof正确判断对象是因为内部机制通过原型链来判断的
valueof()返回对象的原始值

4、如何正确判断this的指向?箭头函数的this是什么?

function foo(){
  console.log(this.a)  //this--->window
}
a=1
foo()

const obj = {
  a:2,
  foo:foo
}
obj.foo() //this--->obj

const c =new foo()  //---> c
上一篇下一篇

猜你喜欢

热点阅读