一.总括

基础知识:

1.变量

2.原型和原型链

3.作用域和闭包

4.异步和单线程

JS的API:

1.BOM,DOM操作

2.事件绑定

3.Ajax

4.JSOP

5.存储

二.基础知识

2.1知识点(变量)

1)变量类型

  • 值类型(基本类型)VS引用类型(对象、数组、函数)
  • typeof运算符

2)变量计算---强制类型转换

  • 字符串拼接
  • ==和===运算符
  • if语句
  • 逻辑运算

问题:

①何时用==和===:if(obj.a==null)相当于if(obj.a===null || obj.a===undefined)其他时候用===

②JS中的内置函数(数据封装类对象):Object、Array、Boolean、Number、String、Function、Date、RegExp、Error

③JS变量按储存方式分为哪些类型:基本类型和引用类型(变量a赋给变量b,改变a,b会怎样)

④什么是JSON:JSON是一个JS对象,它有两个常用API(stringify和parse),同时也是一种数据格式

⑤typeof运算符:null、[ ]、{ }是object;函数是function;其它该是什么是什么

⑥if(xxx):xxx表达式为0、NaN、null、'  '、undefined、false时if语句为错

2.2知识点(原型和原型链)

1)构造函数

function Foo(a,b){
this.a = a;
this.b = b;
//默认返回this
}
//可以有很多实例,括号内可传参
var f1 = new Foo( );
var f2 = new Foo( );

2)构造函数扩展

var a = { } 相当于 var a = new Object( )
var a = [ ] 相当于 var a = new Array( )
function Foo( ){ } 相当于 var Foo = new Function( )

3)原型规则

  • 所有引用类型,除了null,(即数组、对象、函数)都有一个_proto_属性(隐式原型),属性值是一个普通的对象。
  • 所有函数都有一个prototype属性(显式原型),属性值也是一个普通的对象。
  • 所有引用类型,除了null,(即数组、对象、函数)_proto_属性值指向它的构造函数的prototype属性。
obj._proto_ === Object.prototype
  • 要找一个对象的某个属性时,若对象本身没有此属性就去它的_proto_(它构造函数的prototype)中找。

问题:

①判断一个变量是数组类型:instanceof、isArray( )

②写一个原型继承例子

③描述new一个对象的过程:创建新对象-->this指向新对象-->执行代码(对this赋值)-->返回this

④zepto(或者其他框架中)如何使用原型链

2.3知识点(闭包和作用域)

1)执行上下文

  • 范围:一段<script>或者一个函数
  • 全局作用域(一段<script>)
  • 函数作用域(函数)

2)this

  • this要在执行时才能确认值,定义时无法确认值。
  • this指向:
①作为构造函数执行:
定义this空对象-->对this赋值-->返回this ②作为对象属性执行:
var obj = {
name : 'a',
personName : function( ){
console.log(this.name)
}
} //obj.personName( )指向obj ③作为普通函数执行:
function fn( ){
console.log(this)
}//this指向window ④call,apply,bind改变this指向

3)作用域(没有块作用域,有全局作用域和函数作用域。注:ES6有块作用域)

4)作用域链

  • 自由变量:当前作用域没定义的变量
  • 链:自由变量可以一直往父作用域(定义时的父作用域,不是执行时的作用域)

5)闭包

  • 函数作为返回值
  • 函数作为参数来传递

问题:

①变量提升的理解

②写一个闭包例子及实际开发中的闭包应用

③理解作用域:自由变量、作用域链、闭包两个场景

2.4知识点(异步和单线程)

1)什么是异步

  • 异步非阻塞(setTimeout),同步阻塞(alert)
  • 需要异步:可能发生等待的情况,而等待过程不能阻塞程序运行

2)前端需要异步的场景

  • 定时任务:setTimeout、setInterval
  • 网络请求:ajax请求、动态<img>加载
  • 事件绑定

3)异步和单线程

  • 执行setTimeout后,传入它的函数会被暂存,不立即执行(单线程特点,不同时做两件事)
  • 待所有程序执行完,处于空闲状态时,立马看有没有暂存起来的要执行
  • 发现暂存起来的setTimeout中的函数,立即过来执行

2.5知识点(其他)

1)日期

var date = new Date( );
date.getTime( );//毫秒
date.getFullYear( );//年
date.getMonth( );//月
date.getDate( );//日
date.getHours( );//时
date.getMinutes( );//分
date.getSeconds( );//秒

2)Math

Math.random( )//获取随机数

3)数组API

forEach、every、some、sort、map、filter

4)对象API

for(item in obj){ }

问题:

①获取xxxx-xx-xx格式的日期

②获取长度一致字符串格式 随机数

③写一个能遍历对象和数组通用的forEach函数

这里只粗略列出知识点,不作详细介绍。

JavaScript重点知识(一)的更多相关文章

  1. AST抽象语法树——最基础的javascript重点知识,99%的人根本不了解

    AST抽象语法树——最基础的javascript重点知识,99%的人根本不了解 javascriptvue-clicommonjswebpackast  阅读约 27 分钟 抽象语法树(AST),是一 ...

  2. JavaScript重点知识(二)

    三.JS的API 3.1知识点(DOM) 1)DOM本质 将html结构化成浏览器和JS可识别可操作的东西 2)变量计算---强制类型转换 获取DOM节点 Attribute(对html标签属性的修改 ...

  3. AJAX重点知识的心得体会

    下面就为大家带来一篇 AJAX重点知识的心得体会.学习还是有点帮助的,给大家做个参考吧. AJAX是什么? 是Asynchronous Javascript And XML的首字母的缩写, 它不是一门 ...

  4. Javascript基础知识总结一

    Javascript基础知识总结一 <!DOCTYPE html> <html> <head lang="en"> <meta chars ...

  5. 【转载】STL"源码"剖析-重点知识总结

    原文:STL"源码"剖析-重点知识总结 STL是C++重要的组件之一,大学时看过<STL源码剖析>这本书,这几天复习了一下,总结出以下LZ认为比较重要的知识点,内容有点 ...

  6. 学习javascript基础知识系列第二节 - this用法

    通过一段代码学习javascript基础知识系列 第二节 - this用法 this是面向对象语言中的一个重要概念,在JAVA,C#等大型语言中,this固定指向运行时的当前对象.但是在javascr ...

  7. 学习javascript基础知识系列第三节 - ()()用法

    总目录:通过一段代码学习javascript基础知识系列 注意: 为了便于执行和演示,建议使用chrome浏览器,按F12,然后按Esc(或手动选择)打开console,在console进行执行和演示 ...

  8. javascript常用知识点集

    javascript常用知识点集 目录结构 一.jquery源码中常见知识点 二.javascript中原型链常见的知识点 三.常用的方法集知识点 一.jquery源码中常见的知识点 1.string ...

  9. 七个开法者经常忽略或误用的JavaScript基本知识

    七个开法者经常忽略或误用的JavaScript基本知识 翻译自 http://tech.pro/tutorial/1453/7-javascript-basics-many-developers-ar ...

随机推荐

  1. linux下mysql 8.0忘记密码后重置密码

    1://免密码登陆 找到mysql配置文件:my.cnf, 在[mysqld]模块添加:skip-grant-tables   保存退出: 2://使配置生效 重启mysql服务:  service ...

  2. Matlab基础部分1

  3. GUI颜色、字体设置对话框

    %颜色设置对话框 uisetcolor %c 红色 c=uisetcolor %默认规定颜色 c=uisetcolor([ ]); %设置曲线颜色 h = plot([:]); c = uisetco ...

  4. 一个python代码练习

    需求: 写一个用户登录窗口 验证输入的用户名和密码,若正确打印欢迎信息,输入错误三次则加入锁定名单. 锁定名单要持久化存储 # *-* coding:utf-8 *-* # Auth: wangxz ...

  5. spring 配置文件属性设置默认值以及读取环境变量值

    在 Spring 中为 javabean 注入属性文件中的属性值一般人都知道的,可以通过 org.springframework.beans.factory.config.PropertyPlaceh ...

  6. android官方开发教程解释(一)

    最近准备系统学一下android开发,这里不会照搬原文,只会针对教程中一些难以理解的部分进行解释,我只是个菜鸟. 在教程第一章——入门基础里面,讲解android主题的那个小节,大概会有以下的代码: ...

  7. topcoder srm 709 div1

    1 给定一个长度为n的整数数组A,重排列数组A使得下面计算出的X最大:(n不大于15,A中的大于等于0小于等于50) int X=0; for(int i=0;i<n;++i) X=X+(X^A ...

  8. FJUT3574 HOME_W的附加题(带权线段树)题解

    题意: 给定n个数a1,a2,a3,……an.和m次操作. 每次操作格式如下 x y k   表示将a[x]替换为y.并求替换后,前k小的数之和 思路:我们用带权线段树维护权值,这里就是维护i的个数n ...

  9. RHEL7防火墙策略设置

    注意查看firewall防火墙状态,并设置. 打开防火墙且没有放行端口的情况下rhel7这台机器是ping不通的. 放行端口需要永久放行,加--permernant,否则重启后失效,仍然无法访问该端口 ...

  10. (转)WebSocket学习

    石墨文档:https://shimo.im/docs/3UkyOPJvmj4f9EAP/ (二期)17.即时通讯技术websocket [课程17]java We...实现.xmind0.1MB [课 ...