说说你对作用域链的理解
  • 作用域链的作用是保证执行环境里有权访问的变量和函数是有序的,作用域链的变量只能向上访问,变量访问到 window 对象即被终止,作用域链向下访问变量是不被允许的。

  • 简单的说,作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命周期。

JavaScript 原型、原型链 ?  有什么特点?
  • 每个对象都会在其内部初始化⼀个属性,就是 prototype (原型)。

  • 当我们访问⼀个对象的属性时,如果这个对象内部不存在这个属性,那么他就会去 prototype ⾥找这个属性,这个prototype ⼜会有自己的 prototype ,于是就这样⼀直找下去,也就是我们平时所说的原型链的概念。

  • 关系:instance.constructor.prototype = instance.__proto__

  • 特点:
    • JavaScript 对象是通过引用来传递的,我们创建的每个新对象实体中并没有⼀份属于自己的原型副本。当我们修改原型时,与之相关的对象也会继承这⼀改变。

    • 当我们需要⼀个属性的时, Javascript 引擎会先看当前对象中是否有这个属性, 如果没有就会查找他的 Prototype 对象是否有这个属性,如此递推下去,⼀直检索到 Object 内建对象。

请解释什么是事件代理?
  • 事件代理( Event Delegation ),又称之为事件委托。是 JavaScript 中常用绑定事件的常用技巧。顾名思义,“事件代理”即是把原本需要绑定的事件委托给父元素,让父元素担当事件监听的职务。

  • 原理:事件代理的原理是 DOM 元素的事件冒泡。

  • 好处:可以提高性能、可以大量节省内存占用,减少事件注册,比如在 table 上代理所有 td 的 click 事件就非常棒,可以实现当新增子对象时无需再次对其绑定。

Javascript如何实现继承?
  • 构造继承

  • 原型继承

  • 实例继承

  • 拷贝继承

  • 原型 prototype 机制或 apply 和 call 方法去实现继承较简单,建议使用构造函数与原型混合方式

    function Parent(){
    this.name = 'wang'; }
    function Child(){
    this.age = 28; } Child.prototype = new Parent();//继承了Parent,通过原型
    var demo = new Child();
    alert(demo.age);
    alert(demo.name);//得到被继承的属性
谈谈 this 对象的理解
  • this 总是指向函数的直接调⽤者(而非间接调用者)

  • 如果有 new 关键字, this 指向 new 出来的那个对象

  • 在事件中, this 指向触发这个事件的对象,特殊的是, IE 中的 attachEvent 中的 this 总是指向全局对象 Window

事件模型
W3C 中定义事件的发生经历三个阶段:捕获阶段( capturing )、目标阶段( targetin )、冒泡阶段( bubbling )
  • 冒泡型事件:当你使用事件冒泡时,子级元素先触发,父级元素后触发

  • 捕获型事件:当你使用事件捕获时,父级元素先触发,子级元素后触发

  • DOM 事件流:同时支持两种事件模型:捕获型事件和冒泡型事件

  • 阻止冒泡:在 W3C 中,使用 stopPropagation() 方法;在IE下设置 cancelBubble = true

  • 阻止捕获:阻止事件的默认行为,例如 click - <a> 后的跳转。在 W3c 中,使用 preventDefault() 方法,在 IE 下设置 window.event.returnValue = false

new操作符具体干了什么呢?
  • 创建⼀个空对象,并且 this 变量引用该对象,同时还继承了该函数的原型

  • 属性和方法被加入到 this 引用的对象中

  • 新创建的对象由 this 所引用,并且最后隐式的返回 this

异步加载JS的方式有哪些?
  • defer,只支持 IE

  • async :

  • 创建 script ,插⼊到 DOM 中,加载完毕后 callBack

那些操作会造成内存泄漏?
  • 内存泄漏指任何对象在您不再拥有或需要它之后仍然存在

  • setTimeout 的第⼀个参数使用字符串而非函数的话,会引发内存泄漏

  • 闭包使用不当

XML和JSON的区别?
  • 数据体积方面

    • JSON 相对于XML 来讲,数据的体积小,传递的速度更快些。

  • 数据交互方面
    • JSON 与 JavaScript 的交互更加方便,更容易解析处理,更好的数据交互。
  • 数据描述方面
    • JSON 对数据的描述性比 XML 较差
  • 传输速度方面

    • JSON 的速度要远远快于 XML

谈谈你对webpack的看法

webpack 是⼀个模块打包工具,你可以使用 webpack 管理你的模块依赖,并编绎输出模块们所需的静态文件。它能够很好地管理、打包 Web 开发中所用到的 HTML 、Javascript 、 CSS 以及各种静态文件(图片、字体等),让开发过程更加高效。对于不同类型的资源, webpack 有对应的模块加载器。 webpack 模块打包器会分析模块间的依赖关系,最后生成了优化且合并后的静态资源。

说说你对AMD和Commonjs的理解
  • CommonJS 是服务器端模块的规范, Node.js 采用了这个规范。 CommonJS 规范加载模块是同步的,也就是说,只有加载完成,才能执行后面的操作。

  • AMD 规范则是非同步加载模块,允许指定回调函数。

  • AMD 推荐的风格通过返回⼀个对象做为模块对象, CommonJS 的风格通过对 module.exports 或 exports 的属性赋值来达到暴露模块对象的目的。

为什么要有同源限制?
  • 同源策略指的是:协议,域名,端口 相同,同源策略是⼀种安全协议

  • 举例说明:比如⼀个黑客,他利用 Iframe 把真正的银行登录页面嵌到他的页面上,当你使用真实的用户名,密码登录时,他的页面就可以通过 Javascript 读取到你的表单中 input 中的内容,这样用户名,密码就轻松到手了。

offsetWidth/offsetHeight , clientWidth/clientHeight 与 scrollWidth/scrollHeight 的区别
  • offsetWidth/offsetHeight  返回值包含  content + padding + border,效果与 e.getBoundingClientRect() 相同

  • clientWidth/clientHeight 返回值只包含 content + padding,如果有滚动条,也不包含滚动条

  • scrollWidth/scrollHeight 返回值包含 content + padding + 溢出内容的尺寸

javascript 有哪些方法定义对象?
  • 对象字面量: var obj = {};

  • 构造函数: var obj = new Object();

  • Object.create(): var obj = Object.create(Object.prototype);

常见的兼容性问题?
  • png24 位的图⽚在 IE6 浏览器上出现背景,解决方案是做成 png8

  • 浏览器默认的 margin 和 padding 不同。解决方案是加⼀个全局的  *{margin:0;padding:0;}  来统⼀,,但是全局效率很低,⼀般是如下这样解决:

    body,ul,li,ol,dl,dt,dd,form,input,h1,h2,h3,h4,h5,h6,p{
    margin:0;
    padding:0;
    }
  • IE 下, event 对象有 x , y 属性,但是没有 pageX , pageY 属性。  
  • Firefox 下, event 对象有 pageX , pageY 属性,但是没有 x , y 属性。
Node的应用场景
  • 特点:

    • 它是⼀个 Javascript 运行环境

    • 依赖于 Chrome V8 引擎进行代码解释

    • 事件驱动

    • 非阻塞 I/O

    • 单进程,单线程

  • 优点:
    • 高并发(最重要的优点)
  • 缺点:

    • 只支持单核 CPU ,不能充分利用 CPU

    • 可靠性低,⼀旦代码某个环节崩溃,整个系统都崩溃

JavaScript(上)的更多相关文章

  1. ( 译、持续更新 ) JavaScript 上分小技巧(四)

    后续如有内容,本篇将会照常更新并排满15个知识点,以下是其他几篇译文的地址: 第一篇地址:( 译.持续更新 ) JavaScript 上分小技巧(一) 第二篇地址:( 译.持续更新 ) JavaScr ...

  2. ( 译、持续更新 ) JavaScript 上分小技巧(三)

    最近家里杂事较多,自学时间实在少的可怜,所以都在空闲时间看看老外写的内容,学习之外顺便翻译分享~等学习的时间充足些再写写自己的一些学习内容和知识点分析(最近有在接触的:复习(C#,SQL).(学习)T ...

  3. ( 译、持续更新 ) JavaScript 上分小技巧(二)

    考虑到文章过长,不便于阅读,这里分出第二篇,如有后续,每15个知识点分为一篇... 第一篇地址:( 译.持续更新 ) JavaScript 上分小技巧(一) 第三篇地址:( 译.持续更新 ) Java ...

  4. ( 译、持续更新 ) JavaScript 上分小技巧(一)

    感谢好友破狼提供的这篇好文章,也感谢写这些知识点的作者们和将他们整理到一起的作者.这是github上的一篇文章,在这里本兽也就只做翻译,由于本兽英语水平和编程能力都不咋地,如有不好的地方也请多理解体谅 ...

  5. Javascript 上传文件到Azure存储

    对一些前端工程师来讲,使用javascript上传文件到Azure存储中可能是需要掌握的技能,希望这篇博客能给到帮助. 在开始前我们需要了解以下几点: 共享访问签名(Shared Access Sig ...

  6. 读书笔记-你不知道的JavaScript(上)

    本文首发在我的个人博客:http://muyunyun.cn/ <你不知道的JavaScript>系列丛书给出了很多颠覆以往对JavaScript认知的点, 读完上卷,受益匪浅,于是对其精 ...

  7. Javascript上传超大文件实例

    因业务需求需要向伺服器上传大于1GB以上的视频文件,其实网上也能找到很多大文件上传的第三方组件,问题是要么用起来相当不方便,总出现一些bug,要么收费太贵(费用几千,甚至还限定使用数量),最终自己开发 ...

  8. 前端开发 - JavaScript - 上

    1.js引入 <!DOCTYPE html> <html lang="cn"> <head> <meta charset="UT ...

  9. javascript 上传文件相关 (5) Blob 对象

    这一系列文章都讲述的是关于使用 JavaScript 操作文件相关的知识,其中最重要的是 File 对象,而实际上 file 对象只是 blob 对象的一个更具体的版本,blob 存储着大量的二进制数 ...

  10. 《你不知道的javascript(上)》笔记

    作用域是什么 编译原理 分词/词法分析 这个过程会将由字符组成的字符串分解成(对编程语言来说)有意义的代码块,这些代码块被称为词法单元 解析/语法分析 词法单元流(数组)转换成一个由元素逐级嵌套所组成 ...

随机推荐

  1. docker的数据存储

    概述 Docker 为容器提供了两种存放数据的资源:由 storage driver 管理的镜像层和容器层:以及Data Volume. store driver Docker镜像的分层结构如下图所示 ...

  2. 基于MybatisPlus代码生成器(2.0新版本)

    一.模块简介 1.功能亮点 实时读取库表结构元数据信息,比如表名.字段名.字段类型.注释等,选中修改后的表,点击一键生成,代码成即可提现出表结构的变化. 单表快速转化restful风格的API接口并对 ...

  3. ABAP CDS - Language Elements

    The following sections summarize the language elements of the DDL and DCL of the ABAP CDS, arranged ...

  4. React技巧之处理tab页关闭事件

    原文链接:https://bobbyhadz.com/blog/react-handle-tab-close-event 作者:Borislav Hadzhiev 正文从这开始~ 总览 在React中 ...

  5. VisionPro · C# · 加载与保存取像工具

    VisionPro 项目程序设计,取像工具可被包含在工具包内被调用,一般,为了满足程序取像可以实现单次取像,循环取像,实时取像等多方面应用,会将取像工具独立打包. 加载代码: 1 using Syst ...

  6. bat-安装程序-切换路径的问题(小坑)

    当批处理以管理员身份运行时,默认的cmd路径是 C:\Windows\system32 如果在批处理所在目录下存放了一些 安装程序,使用bat安装程序时,bat中去执行时 不会去当前目录去找 exe文 ...

  7. 《AlignedReID:Surpassing Human-Level Performance in Person Re-Identification》理解

  8. 广东省30m二级分类土地利用数据(矢量)

    数据下载链接:百度云下载链接​ 广东省,地处中国大陆最南部,属于东亚季风区,从北向南分别为中亚热带.南亚热带和热带气候,是中国光.热和水资源最丰富的地区之一.主要河系为珠江的西江.东江.北江和三角洲水 ...

  9. vim插件的社区活跃度怎么样

    www.vim.org -> Scripts -> Browse all可以看到有5051个插件.搜索Nerd可以看到NerdTree插件,它的评分是Rating 7882/2514, D ...

  10. 生成RSA密钥的方法[转载]

    openssl genrsa -des3 -out privkey.pem 2048 这个命令会生成一个2048位的密钥,同时有一个des3方法加密的密码,如果你不想要每次都输入密码,可以改成(测试常 ...