js部分基础

简介: 1.js的基本类型有哪些?引用类型有哪些?null和undefined的区别。  基础类型:number,null,regex,string,boolean  引用类型 : object,function,array   null是数据类型,undefined未定义  2.

1.js的基本类型有哪些?引用类型有哪些?null和undefined的区别。

  基础类型:number,null,regex,string,boolean

  引用类型 : object,function,array  
  null是数据类型,undefined未定义

  

2.如何判断一个变量是Array类型?

  array:Object.prototype.toString.call(obj)  [object Array]

  

3.引用类型和基本类型的区别

  引用类型:堆内存,是二级缓存,保存一个指针,指向另一个内存,如果程序不结束或者没有手动释放,则不释放

  基本类型:栈内存,是一级缓存,由系统分配或者释放。

  

4.事件委托(手写例子)

<div id='parent'></div>
<script>
    function delegate(dom,type,fn){
      document.body.click(function(e){
          if(e.target = dom){
              fn(e)
          }
      })
    }
<script>            

  

5.对闭包的理解,闭包的优缺点?

  闭包:一个可以让外部访问的函数。消耗内存

  

6.改变this的几种方法?

  call , apply , bind

  

7.显式和隐式原型

  显式原型:prototype , Function是一个Object,Function有一个属性prototype,它是一个指针,指向一个对象。这个对象有construsctor属性

  隐式原型:_proto_ ,指向创建这个对象的函数的prototype,一个指针指向一个对象。

  

8.创建对象的多种方式

//字面量
var obj = {name:'test'}

//构造函数
var obj = new Object({name:''})

  

9.实现继承的多种方式和优缺点

//原型链
function Parent(){
   this.name=''  
}
function Son(){}
Son.prototype = new Parent()

//创建新对象
var son = Object.create(new Parent())

//call,apply
function Son(){
   Parent.call(this,'')
}

//es6
class Son extends Person{}

  

10.变量提升

    var  value = 1;
  var  test  =  function(){
    console.log(value)
    var value =  2;
  }
  test()
  function test(){
    console.log(value+1)
  }
  test();     
    // undefined , undefined
 

  

11.匿名函数

(function(){
    alert('test')
})()

  

12.NaN != NaN,false != null

 

13.new 一个对象的过程

function ClassName (option){
    console.log(option)  
}
ClassName.prototype.say=function(){}


let obj = new ClassName({})


1.创建一个对象,传入原型 lo = Object.create(ClassName.prototype) 
2.执行当前函数,并且this执行 newObj = ClassName.call(o)
3. 返回新的对象 newObj

  

 14.实现一个bing函数

//bings函数
Function.prototype.binds = function () {
    var args = [].slice.call(arguments,1),target = arguments[0]
    return this.apply(target,args)
}
function tesa(a,b) {
    console.log(this,a+b)
    return a+b
}
console.log(tesa.binds({a:1},1,2))

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

相关文章
|
JavaScript
JS基础之解构赋值
解构赋值 在js中,我们经常会将对象或者数组里面的一部分数据作为参数传递给函数,如果我们使用传统的.方法会很麻烦。
|
JavaScript 前端开发
JavaScript 入门基础 - 运算符(三)
文章目录 JavaScript 入门基础 - 运算符(三) 1.什么是运算符 2.表达式和返回值 3.算术运算符概述 4. 赋值运算符 5.递增和递减运算符 5.1 递增和递减运算符概述 5.2 递增运算符 5.2.1 前置递增运算符 5.2.2 后置递增运算符 5.2.3 后置和前置运算符的区别 6. 比较运算符 7. 逻辑运算符 7.1 逻辑运算符概述 7.2 逻辑与 7.3 逻辑或 7.4
121 0
JavaScript 入门基础 - 运算符(三)
|
存储 JSON JavaScript
JavaScript 入门基础 - 变量 / 数据类型(二)
JavaScript 入门基础 - 变量 / 数据类型(二)
87 0
JavaScript 入门基础 - 变量 / 数据类型(二)
|
JavaScript 前端开发 物联网
JavaScript 入门基础 / 概念介绍(一)
JavaScript 入门基础 / 概念介绍(一)
112 0
JavaScript 入门基础 / 概念介绍(一)
|
JavaScript 前端开发 Java
JavaScript的基础使用
JavaScript的基础 一、javascript简介 JavaScript简称js,最初由网景(现在的Mozilla)公司创建,由于商标冲突原因,其标准版本命名为ECMAScript,但是一般人们还是叫JavaScript,只在谈标准的时候说到ECMAScript这个名字。值得注意的是JavaScript与java没有任何关系,就像雷峰塔(神话中镇压白娘子的塔)和雷锋。此外js(JavaScript)和jsp(java servlet pages)也没有关系。   js的工作分为两部分,一部分属于js语言本身的特性,而另一部需要依靠宿主环境(web浏览器)才能完成。 二、javascri
JavaScript的基础使用
|
JavaScript 前端开发
js 模块化基础和模块规范AMD、CMD、ES6模块
js 模块化基础和模块规范AMD、CMD、ES6模块
83 0
|
JavaScript 前端开发
原生js制作选项卡详解,适合无基础的人学习
原生js制作选项卡详解,适合无基础的人学习
109 0
原生js制作选项卡详解,适合无基础的人学习
|
JavaScript 前端开发
vue js文字跑马灯基础版本
提供两种解决思路
253 1
|
存储 JavaScript 前端开发
JavaScript基础(一篇入门)
JavaScript基础(一篇入门)
183 0
JavaScript基础(一篇入门)
|
XML JavaScript 前端开发
计算机二级web题目(5)--js(Javascript)基础
计算机二级web题目(5)--js(Javascript)基础
252 0