JavaScript重点知识(一)
一.总括
基础知识:
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重点知识(一)的更多相关文章
- AST抽象语法树——最基础的javascript重点知识,99%的人根本不了解
AST抽象语法树——最基础的javascript重点知识,99%的人根本不了解 javascriptvue-clicommonjswebpackast 阅读约 27 分钟 抽象语法树(AST),是一 ...
- JavaScript重点知识(二)
三.JS的API 3.1知识点(DOM) 1)DOM本质 将html结构化成浏览器和JS可识别可操作的东西 2)变量计算---强制类型转换 获取DOM节点 Attribute(对html标签属性的修改 ...
- AJAX重点知识的心得体会
下面就为大家带来一篇 AJAX重点知识的心得体会.学习还是有点帮助的,给大家做个参考吧. AJAX是什么? 是Asynchronous Javascript And XML的首字母的缩写, 它不是一门 ...
- Javascript基础知识总结一
Javascript基础知识总结一 <!DOCTYPE html> <html> <head lang="en"> <meta chars ...
- 【转载】STL"源码"剖析-重点知识总结
原文:STL"源码"剖析-重点知识总结 STL是C++重要的组件之一,大学时看过<STL源码剖析>这本书,这几天复习了一下,总结出以下LZ认为比较重要的知识点,内容有点 ...
- 学习javascript基础知识系列第二节 - this用法
通过一段代码学习javascript基础知识系列 第二节 - this用法 this是面向对象语言中的一个重要概念,在JAVA,C#等大型语言中,this固定指向运行时的当前对象.但是在javascr ...
- 学习javascript基础知识系列第三节 - ()()用法
总目录:通过一段代码学习javascript基础知识系列 注意: 为了便于执行和演示,建议使用chrome浏览器,按F12,然后按Esc(或手动选择)打开console,在console进行执行和演示 ...
- javascript常用知识点集
javascript常用知识点集 目录结构 一.jquery源码中常见知识点 二.javascript中原型链常见的知识点 三.常用的方法集知识点 一.jquery源码中常见的知识点 1.string ...
- 七个开法者经常忽略或误用的JavaScript基本知识
七个开法者经常忽略或误用的JavaScript基本知识 翻译自 http://tech.pro/tutorial/1453/7-javascript-basics-many-developers-ar ...
随机推荐
- php+js 防止被抓包篡改数据,数据签名校验
签名密钥,这个是自己生成的,需要客户端+服务端一致. <?php /** * 获取签名 * @param $data 提交的数据 * @param $key 安全密钥 * @return boo ...
- DOM EventListener
向元素添加事件句柄的语法:element.addEventListener(event, function, useCapture); 第一个参数是事件的类型,如click或者mousedown,注意 ...
- HTML5<input>标签
在表单中最为核心的就是<input>标签,使用<input>标签可以在表单中定义文本输入框.单选按钮.复选框.重置按钮等,其基本语法格式如下: <input type=& ...
- c和c++main函数的参数
1.代码 int main(int argc,char **argv[]) { ; } 2.分析 argc:代码参数个数 argv:二级指针,很多个字符串,这里代表参数列表 3.分析 这个代码最终被编 ...
- Python3 tkinter基础 Button text,fg 按钮上显示的文字 文字的颜色
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- 网络流24题 P2754 [CTSC1999]家园
思路 如图,建立分层图跑dinic 每次在残余网络里加边继续跑 跑到ans>=k时候的i就是答案 诶呀啊,忘记弄箭头了,最后一列是向上的箭头,不过聪明的你们应该没啥影响 代码 #include ...
- How to search for ? (question mark) in Excel
The ? is a wildcard which represents a single character, and the * is a wildcard character that repr ...
- p3302 [SDOI2013]森林(树上主席树+启发式合并)
对着题目yy了一天加上看了一中午题解,终于搞明白了我太弱了 连边就是合并线段树,把小的集合合并到大的上,可以保证规模至少增加一半,复杂度可以是\(O(logn)\) 合并的时候暴力dfs修改倍增数组和 ...
- 题解——Codeforces Round #508 (Div. 2) T1 (模拟)
依照题意暴力模拟即可A掉 #include <cstdio> #include <algorithm> #include <cstring> #include &l ...
- MPU6050可以读取ID值,温度值和原始数据值为零问题解决
MPU6050可以读取ID值是0x68,但是读取到的原始数据为零(下面虚拟示波器图中温度值是36.529是单位转换公式中的值被打印出来了,实际值也是零).经论坛搜寻,发现MPU6050出现问题的原因有 ...