1,什么是原型对象?

每一个构造函数都有一个prototype的属性, 这个属性的值是一个对象, 这个对象就叫做构造函数的原型对象; 一般建议将构造函数的成员属性绑定在原型对象 prototype 上, 因为原型对象 prototype 身上的属性默认可以通过实例对象访问到; 这样做可以保证在每次通过new 关键字创建实例对象的时候, 这些方法不会被重复在内存中创建.

2,什么是原型链?

每个构造函数都有一个prototype 属性, 即原型对象, 通过实例对象的proto属性也可访问原型对象;而原型对象本质也是一个对象, 是对象就有自己的原型对象, 最终形成的链状的结构称为原型链.

3,什么是构造函数?

构造函数本质也是一个函数, 只不过这个函数在定义的时候首字母一般需要大写; 构造函数调用的时候,必须通过一个new 关键字来调用; 我们一般不直接使用构造函数, 而是使用构造函数创建出来的实例对象. 构造函数是 js 面向对象的一个重要组成部分.

4,什么是闭包, 有什么作用, 使用的时候需要注意什么?

闭包是一个跟函数相关的概念,表现形式是一个父函数内部,嵌套了一个子函数, 子函数直接或间接的被返回给外部作用域, 并且子函数中会使用到父函数局部作用域中的变量.当我们在外部调用这个子函数的时候, 就会发生闭包现象

闭包的作用:闭包可以延展一个函数的作用域

注意事项:不能滥用闭包, 会导致内存泄漏

5,什么是内存泄漏, 那些操作会引起内存泄漏?

内存泄漏是指本应该被垃圾回收机制回收的内存空间由于某种特殊原因没有及时被回收, 称之为内存泄漏. 滥用全局变量和滥用闭包都会导致内存泄漏.

6,什么是预解析?

JS 代码在执行之前,解析引擎会对代码进行一个预先的检查, 主要会对变量和函数的声明进行提升, 将变量和函数的声明提到代码的最前面.变量只提升声明, 不提升赋值。

7,对this 关键字的理解

this在不同的场景下指向不太一样, 主要分为一下几种情况: 普通函数中指向全局window;对象的成员方法中指向该方法的宿主对象; 构造函数中指向new 出来的实例对象;事件处理函数中指向事件源; 回调函数中指向全局window

8,call/apply/bind 的区别

这三个方法都是函数这个特殊对象的方法,通过这三个方法都可以改变函数内部this 的指向.不同点:call和 apply会调用一次函数, 而 bind 不会调用函数, 只会在内存中创建一个函数的副本(修改过this 指向的函数).call 从第二个参数开始需要一个参数列表,apply 第二个参数需要是一个数组

9,caller 和 callee的区别是什么?

函数 fun.caller返回调用 fun 的函数对象,即fun 的执行环境,如果 fun 的执行环境为 window则返回null;Callee 是函数的arguments这个特殊对象的一个属性, 指向函数本身.

10,.new 操作符具体干了什么呢?

第一步创建一个空对象;

第二步将 this 指向空对象;

第三步动态给刚创建的对象添加成员属性;

第四步隐式返回this

11,下面代码运行的结果是什么?

var a={
id:10}
b=a;
b.id=1;
b.name='test';
console.log  (a);

执行结果: 输出{id: 1, name: "test"}

分析过程: 对象是一种引用数据类型, 简单的b=a 只是把a 在内存中的地址赋值给了b, 所以修改b 会影响a.

12,下面代码执行完毕, 浏览器依次弹出什么?

(functiontest(){ var a=b=5;alert(typeof a);alert(typeof b);
})()alert(typeof a); alert(typeof b);

执行结果: 依次弹出: number; number,undefined,number

分析过程: 自调用函数会开辟一个局部作用域, var a=b=5 这句代码var 只会修饰21a, 所以a 是一个局部变量, b 是全局变量.

13,[1,2,3].map(parseInt); 输出结果是什么?

输出结果:[1,NaN,NaN];

分析过程:

[1,2,3]. map  (function(item,index){
// console.log(item,index);
//parseInt(数值,进制)
parseInt(1,0);
parseInt(2,1);
parseInt(3,2);
});  

14,下面代码执行结果是什么?

console.log  (square(5));
var square=function(n){ return n*n;}

执行结果: 报错(Uncaught TypeError: square is not a function)

分析过程: 函数表达式方式声明的函数只提升声明, 不提升赋值, 所以不能再声明之前调用.

15,下面的代码会输出什么? 怎么改动下面代码, 使其依次输出1,2,3,4,5

for(var i=1;i<=5;i++){
setTimeout(function(){console.log  (i);
},1000);}

执行结果: 在控制台输出:6,6,6,6,6

改造后的代码:

for (var i= 1; i<=5; i++) {
(function (i) {setTimeout(function () { console.log(i);
}, 1000 *i) })(i) }

js中易错难点集合(1)相关推荐

  1. c语言中local status6,C语言中易错的地方(一)

    c++中易错的地方 1:scanf int a; int b; scanf("%d-=%d",&a,&b); printf("a=%d,b=%d" ...

  2. 小白必看!JS中循环语句大集合

    摘要:JavaScript中,一共给开发者提供了一下几种循环语句,分别是while循环,do-while循环,for循环,for Each,for-in循环和for-of循环. 本文分享自华为云社区& ...

  3. c语言常考易错知识点,C语言中易错点知识点拾遗

    C语言中易错点知识点拾遗 1. 首先,feof()是文件结束检测函数,如果没有结束,返回值是 0,结束了是 1 由于 feof(fp)返回 0 才 是没有结束,所以通常写成 while(!feof(f ...

  4. 浅谈c++中继承体系中易错点

    浅谈c++中继承体系中易错点 目前,就我工作经验来看,在c++中继承体系中总爱搞错的有两点: 不把基类中需要覆盖的方法为设置为虚方法. 不把基类中的析构函数设置为虚方法. 就第一点而言,如果基类中需要 ...

  5. C语言系列(二):最近重拾C语言的想法,谈到C中易错点,难点;以及开源代码中C语言的一些常用技巧,以及如何利用define、typedef、const等写健壮的C程序...

    写在前面的话:本系列主要是自己在c语言运用时,对一些不了解,但开源代码中常用的技巧,和一些c语言中偏门和易错点进行解析. 加入了自己的分析,如果不到位请多海涵,另外,引用一些非常好的文章(都有引用li ...

  6. js 中转换成list集合_java stream中Collectors的用法

    简介 在java stream中,我们通常需要将处理后的stream转换成集合类,这个时候就需要用到stream.collect方法.collect方法需要传入一个Collector类型,要实现Col ...

  7. js 中转换成list集合_程序员:java集合介绍-List,具说很详细,你不来看看?

    Java集合介绍 作为一个程序猿,Java集合类可以说是我们在工作中运用最多.最频繁的类.相比于数组(Array)来说,集合类的长度可变,更加方便开发. Java集合就像一个容器,可以存储任何类型的数 ...

  8. 数据库知识点4——关系代数中易错题的总结

    1. 在关系代数运算中,五种基本运算为:并.差.选择.投影.乘积 2.关系如下图所示,查询既学习课程号为001课程又学习课程号为002号课程的学生的学号, 注:.关系代数操作运用∩符号表达 3. 关系 ...

  9. java的易错点_java中易错点

    1.A instanceof  B{这是没有好好利用java多态的表现} java中的二元操作符,测试A对象是否是B类的实例: 返回值:boolean类型 2."=="与 &quo ...

  10. css中易错漏点汇总(待续。。。)

    1.display:inline-block和float,针对以下代码举例: <nav class="menu"> <ul> <li class=&q ...

最新文章

  1. 【讨论】从吉日的一段话说起+寻找WinForm架构的最佳实践
  2. pycharm上python项目的导出_pycharm项目打包成exe
  3. hdu,2050,折线分割平面
  4. IDEA打开README.md文件时卡死
  5. C#旅程——ListView控件使用
  6. 这款完全开源可自主DIY的小程序商城太强大了,直接可给客户搭建赚米
  7. access查询出生年月大于,access选择题题库
  8. UG模具设计从入门到精通
  9. 【银联支付】php接入银联支付
  10. Redis缓存雪崩解决方案
  11. 机器学习中常用的不等式
  12. 迭代最近邻ICP算法
  13. javaScript jquery完美判断图片是否加载完毕
  14. SIP-sipp的使用
  15. vue设置页面滚动高度_vue 解决无法设置滚动位置的问题
  16. 梦幻新开服务器维护,梦幻西游12月新开服务器
  17. 北京大学计算机科学系金鑫,北京大学2019届毕业生校友联系人见面会举行
  18. 2021年亚马逊新手如何快速搭建店铺listing?五分钟让快速精通
  19. ECharts数据可视化(二)
  20. 微小说获奖作品50则

热门文章

  1. EXCEL 快捷键集合
  2. MTK_核心功能模块内部结构框图
  3. 软件开发之大忌:想当然
  4. ShareTechnote系列LTE(17):下行SCH/PCH/MCH信道编码
  5. 手机qlv转mp4工具
  6. 马克飞象markdown用法
  7. Android方法耗时监控工具
  8. 股票价格中后取复权的计算
  9. mysql常用数据库连接池_Java主流常用的数据库连接池
  10. 高德地图-设置点标注的文本标签