学习笔记-JS基础1

76 阅读2分钟

学习来源:JS基础知识(覆盖JS基础面试题)

Js基础

1、变量类型和计算

1.1、JS中typeof的类型有哪些

console.log(typeof undefined); //undefined
console.log(typeof 123); //number
console.log(typeof '123'); //String
console.log(typeof true); //boolean
console.log(typeod [1,2,3]); //object
console.log(typeof {"id":11}; //object
console.log(typeof null); //object
console.log(typeof console.log); //function

1.2、类型转换

显式类型转换

  • Number函数

    • 数字:转换后还是数字
    • 字符串:如果可以被解析为数值,那就是响应数值,如果不能,则是NaN,如果空字符串就是0
    • 布尔值:true是1,false是2
    • undefined:NAN
    • null:0
    • object:先执行valueOf,看能否替换,如果不行再执行toString,看是否可以转换,如果不可以报错
  • String函数

    • 数字:转换成对于字符串
    • 字符串:还是对应的字符串
    • 布尔值:true为‘true',false是’false'
    • undefined: undefined
    • null:null
    • object:先执行toString,看能否转换,如果不能再执行valueOf,看是否可以转换,如果不可以报错
  • Boolean

    • 下面几个是false,其他都是true

      • NAN
      • null
      • undefined
      • 0
      • ""
      • flase

隐式类型转换

  • 四则运算
  • 判断语句

1.3、何时使用 ==,何时使用 ===

除了obj.a == null以外,都用===,==要用的时候一定是已经定义的obj.a == null转换之后是obj.a == null || obj.a == undefined

1.4、JS有哪些内置函数

object
Array
Boolean
Number
String 
Function
Date
RegExp
Error

1.5、JS变量按照存储方式有那些类型

  • 值类型
  • 引用类型(节省空间,公共内存块)

区别:

值类型改变一个不会影响其他,引用类型改变都改变,因为公用内存块

1.5、如何理解JSON

JSON是JS的一个对象,也是一种数据格式,JSON中的两个api如下:

  • 将JSON字符串转换成JSON对象JSON.parse()
  • 将JSON对象转换成JSON字符串JSON.stringify()

1.6、使用Object.prototype.toString获取一个对象的类型

var toString = Object.prototype.toString;
​
toString.call(new Date); // [object Date]
toString.call(new String); // [object String]
toString.call(Math); // [object Math]
toString.call(/s/); // [object RegExp]
toString.call([]); // [object Array]//Since JavaScript 1.8.5
toString.call(undefined); // [object Undefined]
toString.call(null); // [object Null]

2、原型和原型链

2.1、原型的五条原则

  • 所以的引用类型都可以自定义添加属性
  • 所有的引用类型都有自己的隐式原型(proto)
  • 函数都有自己的显示原型(prototype)
  • 所有的引用类型的隐式原型都指向对应构造函数的显示原型
  • 使用引用类型的某个自定义属性时,如果没有这个属性,会去该引用类型的__proto_(也就是对应构造函数的prototype)中去找

image.png

2.2、如何精确判断一个变量是数组类型

arr instanceof Array

instanceof判断一个引用类型是什么引用类型,是通过_proto_(隐式原型一层层往上找,能否找到对应的构造函数的prototype)

2.3、描述new一个对象的过程

  • 创建一个新对象
  • this指向这个新对象
  • 执行代码给this赋值
  • return this
function foo(name){
    this.name = name;
    // return this; //本身会执行这一布
}
var f = new foo('新对象'):
​

\