![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JavaScript基础
此专栏会详细介绍Javascript的每个知识点,让你面试不再痛苦
温清夜
我仍然认为向人诉苦不过是徒劳,与其如此,不如默默承受。
展开
-
前端性能优化之雅虎35条军规
页面内容(1) 减少HTTP请求数Web前端80%的响应时间花在图片,样式,脚本等资源上,最直接的方式是减少页面所需的资源,但并不现实,所以减少HTTP请求数主要途径是:1 合并JS/CSS 文件,服务器CDN自动合并,通过把所有的脚本放在一个文件中来减少请求数2 使用CSS雪碧图,合成一个文件 通过background-image和background-position控制3 行...转载 2019-03-18 09:28:31 · 286 阅读 · 0 评论 -
从URL输入到页面展示发生了什么
总的来说就是下面几个过程:DNS解析:将域名解析成IP地址TCP连接:TCP的三次握手发送HTTP请求服务器处理请求并返回HTTP报文浏览器解析渲染页面断开连接:TCP四次挥手URL到底是啥URL(Uniform Resource Locator)统一资源定位符,用于定位互联网上资源,俗称网络.遵循以下语法规则:scheme://host.domain:port/path/fi...原创 2019-02-25 15:56:23 · 776 阅读 · 0 评论 -
Cookie和Session的区别
Cookie (存储在用户本地终端上的数据)Cookie指某些网站为了辨别用户身份,进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。Cookie实际上是指小量信息,是由Web服务器创建的,将信息存储在用户计算机上的文件.场景当我们浏览器以前访问过的网站时,网页中可能会出现:你好XXX。这会让我们感到很亲切,就像是吃了小甜品一样。这其实是通过访问主机上的一个文件来实...原创 2019-01-23 17:47:54 · 244 阅读 · 0 评论 -
call,apply,bind
callcall和apply就是为了改变某个函数运行时的上下文(context)而存在的,换句话说,就是为了改变函数体内部 this 的指向。function a(name) { console.log(name, 111) console.log(this, 222) }a('fanfei')使用call改变this ...原创 2019-02-22 11:54:43 · 193 阅读 · 0 评论 -
模块化
涉及的面试题什么是模块化?为什么要使用模块化?都有哪几种方式可以实现模块化,各有什么特点?什么是模块化?模块化就是为了减少系统的耦合度,提高高内聚,减少资源循环依赖,增强系统框架设计让开发者便于维护,同时让逻辑相同的部分可复用模块化开发:针对JS,CSS以功能或业务为单元组织代码。JS方面解决独立作用域,依赖管理,api暴露,按需加载与执行,安全合并等问题,CSS方面解决依赖管理,...原创 2019-02-22 15:51:08 · 1045 阅读 · 0 评论 -
Proxy
proxy 代理 ES6 增强 对象和函数(方法) 生命周期 预处理就是在函数执行之前先预处理一下语法let p = new Proxy(target, handler);target就是你要处理的函数或者是对象,handler就是你要对该函数或者对象进行的操作target:let target={ add:function(val){ return va...原创 2019-02-22 18:30:08 · 374 阅读 · 0 评论 -
手写call,apply,bind函数
涉及面试题call,apply,bind函数内部实现是怎样的?考虑两点:第一个参数为undefined或null的时候,那么会转变为window改变了this执行,让新的对象可以执行该函数。callFunction.prototype.myCall = function(context) { if (typeof context === "undefined" || c...原创 2019-02-22 19:37:25 · 10780 阅读 · 2 评论 -
详解异步编程
我们知道JavaScript语言的执行环境是单线程,也就是一次只能完成一个任务。如果有多个任务就必须排队,前面一个任务完成,再执行后面的一个任务这种模式虽然实现起来简单,执行环境相对单纯,但是只要有一个任务耗时很长,后面的任务都必须排队等着,会拖延整个程序的执行。常见的有的浏览器无响应(假死,往往就是因为某一段JS代码长时间运行(比如死循环),导致整个页面卡在这个地方,其他任务无法执行。为了解...原创 2019-02-22 22:43:34 · 1014 阅读 · 0 评论 -
scrollWidth,clientWidth,offsetWidth的区别
scrollWidth:对象的实际内容的宽度,不包边线宽度,会随对象中内容超过可视区后而变大。clientWidth:对象内容的可视区的宽度,不包滚动条等边线,会随对象显示大小的变化而改变。offsetWidth:对象整体的实际宽度,包滚动条等边线,会随对象显示大小的变化而改变。clientWidth和clientHeigh 、 clientTop和clientLeftclientWid...原创 2019-02-23 11:52:14 · 946 阅读 · 0 评论 -
关于模块化立即执行函数和ESModule的详解
立即执行函数在了解立即执行函数之前,先明确一下函数声明,函数表达式以及匿名函数的形式function test(){//函数声明 console.log('test')}var test=function(){//函数表达式 console.log('test')}function(){//匿名函数 console.log('test')}什么是立即执行函数...转载 2019-03-01 15:44:51 · 4732 阅读 · 0 评论 -
理解Object.defineProperty的作用
对象是由多个名/值对组成的无序的集合。对象中每个属性对应任意类型的值。定义对象可以使用构造函数或字面量的形式:var obj = new Object; //obj = {}obj.name = "张三"; //添加描述obj.say = function(){}; //添加行为除了以上添加属性的方式,还可以使用Object.defineProperty定义新属性或修改原有的属性...转载 2019-02-26 20:55:44 · 4235 阅读 · 0 评论 -
写一个加法函数sum同时支持sum(x,y)sum(x)(y)
function sum(){ var num = arguments[0]; if(arguments.length==1){ return function(sec){ return num+sec; } }else{ var num = 0; for(var i = 0;i<...原创 2019-09-24 15:49:13 · 1613 阅读 · 0 评论 -
使用typeof并不能判断obj是否是一个对象的问题
涉及的笔试题使用typeof obj==='object’潜在问题,并不能确定obj是否是一个对象?当初我看到这个题的时候,我的第一反应就是使用instanceof,其实这是错误的,这里让判断的就是object类型,并没有让你判断详细的对象类型(Array,String之类)其实这里主要是为了区分null和对象,因为使用typeof 来判断null,返回的结果也是object。这里提供...原创 2019-02-10 12:10:07 · 2148 阅读 · 0 评论 -
原型继承和Class继承
涉及的面试题原型如何实现继承?CLass如何实现继承?Class本质是什么?首先讲一下class,当初我学习ES6的时候,出现class的时候,我蛮开心的,因为我有JAVA的基础,对class可是非常的理解。后来发现,其实JS中还是没有类的存在的,class只是一个语法糖其本质函数还是函数class Person {}console.log(typeof Person) //func...原创 2019-02-09 22:27:28 · 1685 阅读 · 0 评论 -
JavaScript实现十大排序算法
排序算法是数据结构与算法中最基本的算法之一排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序。而外部排序是因为排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存关于时间复杂度平方阶(O(n²))排序:直接插入,直接选择,冒泡排序线性对数阶(O(logn))排序:快速排序,堆排序,归并排序O(N)排序:基数排序,桶排序,箱排序关于稳定性稳...原创 2019-02-03 18:48:47 · 329 阅读 · 0 评论 -
(一)史上最全的JavaScript变量类型和计算的介绍
我写这篇文章的原因:我在复习的时候,阅读很多博客发现很多我没有听过的名称,比如原始类型,对象类型等,搞得我一头雾水。我所了解的数据类型不就string number之类的,但是我也不是很清楚他们属于哪个阵营吧。但是我知道基本数据类型和引用类型。这原始类型和对象类型是从哪里冒出来的?随后我在网上搜索了N篇文章,重要搞清楚这些概念。其实很多名字都是指向一个东西,只是叫法不一样。比如你叫张三,小...原创 2018-12-30 17:57:51 · 304 阅读 · 0 评论 -
(二)JavaScript常用数组操作方法,包含ES6方法
一 concat()concat() 方法用于连接两个或多个数组。该方法不会改变现有的数组,仅会返回被连接数组的一个副本。var arr1 = [1, 2, 3]var arr2 = [4, 5]var arr3 = arr1.concat(arr2)console.log(arr1) //[ 1, 2, 3 ]console.log(arr2) //[4,5]console.log...原创 2018-12-31 11:10:52 · 417 阅读 · 0 评论 -
(二)有关数组的面试题
数组去重(常考)方法一(暴力)var arr = [1, 23, 1, 1, 1, 3, 23, 5, 6, 7, 9, 9, 8, 5];function deleteItem(arr) { for (let i = 0; i < arr.length; i++) { for (let j = i + 1; j < arr.length; j++) {...原创 2019-01-01 11:25:24 · 1063 阅读 · 0 评论 -
(三)JavaScript的常用字符串方法(包含ES6)
一般不要使用字符串对象来创建字符串,因为它会拖慢执行速度,还会产生其它副作用字符串的所有方法都不会改变字符串本身charAt()返回指定索引位置的字符存在的话返回索引位置,不存在话返回空var s = "qwe"console.log(s.charAt(1))//wconsole.log(s.charAt(5))//console.log(Boolean(s.charAt(5...原创 2019-01-01 15:48:04 · 400 阅读 · 0 评论 -
写一个能遍历对象和数组的forEach函数
//写一个能遍历对象和数组的forEach函数function forEach(obj, fn) { var key if (Array.isArray(obj)) { //准确判断是不是数组 obj.forEach((item, index) => { fn(index, item) }) }...原创 2019-01-05 19:30:24 · 1266 阅读 · 0 评论 -
this问题
涉及面试题:如何正确判断this?箭头函数的this是什么?说明this的几种不同使用场景this必须是在要执行时才能确认值,定义时无法确定.1.作为构造函数属性执行2.作为对象属性执行3.作为普通函数执行4.call apply bind我们先看几个函数调用的场景function fn() { console.log(this.a)}var a = 1fn()c...原创 2019-01-23 19:53:04 · 561 阅读 · 0 评论 -
闭包详解
涉及的面试题什么是闭包?函数A内部有一个函数B,函数B可以访问到函数A中的变量,那么函数B就是闭包function A() { let a = 1; window.B = function() { console.log(a) }}1. 如何产生闭包?当一个嵌套的内部(子)函数引用了嵌套的外部(父)函数的变量(函数)时, 就产生了闭包...原创 2019-01-25 17:21:11 · 463 阅读 · 0 评论 -
JavaScript的拷贝(克隆)问题
let _ = require('lodash');let obj2 = { a: [1, 2, 3], b: { c: 2, d: 3 }}let obj3 = _.cloneDeep(obj2)obj3.b.c = 1console.log(obj2)原创 2019-01-25 21:37:10 · 6689 阅读 · 1 评论 -
ES6中的let和const详解
大家有可能想let和const有什么可以特意去了解的呢?它们不就是ES6新出的二种变量命名方式,确实如果,但是里面的坑你们还是需要了解的,很多人认为let是可以代替var的,嘿嘿,如果你们这样理解就大错特错了letlet用来声明变量,并且会在当前作用域形成代码块所谓代码块其实就是{ let a=1}{}就是一个代码块.使用let声明的变量,只能在当前代码块中访问,类似函数作...原创 2019-01-16 22:39:58 · 2766 阅读 · 0 评论 -
跨域详解
同源策略协议 域名 端口 都一样就是同源同源策略限制了从同一个源加载的文档或脚本如何与来自另一个源的资源进行交互。这是一个用于隔离潜在恶意文件的重要机制跨源网络访问同源策略控制了不同源之间的交互,例如在使用XMLHttpRequest或标签时则会收到同源策略的约束。这些交互通常分为三类:1.通常允许跨域写操作(Cross-origin writes)。例如链接(Links),重定向以...原创 2019-01-22 18:33:16 · 493 阅读 · 0 评论 -
原型和原型链
涉及的面试题instanceof的原理A instanceof Binstanceof的运算符的第一个变量是一个对象,暂时称为A,第二个变量一般是一个函数,暂时称为Binstanceof的判断规则:沿着A的__proto__这条线来找,同时沿着B的prototype这条线来找,如果两个线能找到同一个引用,即同一个对象,那么就返回true。如果找到终点还未重合,则返回false。按照...原创 2019-02-03 12:29:47 · 281 阅读 · 0 评论 -
JavaScript详细介绍
JavaScript概述JavaScript是一种通过解释执行的高级编程语言,同时也是一门动态,弱类型的脚本语言,适合面向对象(基于原型)和函数式的编程风格。解释语言可以直接在解释器中运行,而与解释语言相对的编译语言(例如C++),要先将代码编译成机器码,然后才能执行。不过解释语言有一个弱点,就是如果有一条不能运行,那么后面的就不能运行名次解释解释语言:程序不需要编译,程序在运行时才...原创 2018-12-29 10:58:44 · 2771 阅读 · 0 评论