1、6种数据类型
1)原始类型(5种)
number
string
boolen
null
undefined
2)对象object(包括Function、Array、Date、。。。等等),其中Function是一种特殊的对象
2、隐式转换



3、包装对象(number、string、boolean这三个原始类型有包装对象)

4、类型检测
1)判断原始类型常用typeof


2)判断对象常用instanceof

3)其他判断方式

5、没有块级作用域(只有 函数作用域 和 全局作用域)

for(var i=0;i<10;i++){}
console.log(i);
等同于
var i=0;
for(;i<10;i++){}
console.log(i);


6、对象结构

7、创建对象(3种方式)和原型链
参考:https://www.cnblogs.com/chengzp/p/prototype.html

//字面量创建对象
var o1 = {a:1,b:2
};
var o2 = new Object("{a:1,b:2}");
//构造函数创建对象
var M = function(){this.a=2;
}
var o3 = new M();
//Object.create创建对象
var p = {a:99};
var o4 = Object.create(p);//以p做为原型创建对象o4,所以o4._proto_ === p


8、数组常用方法
ie9及以上版本浏览器支持es5

9、函数
1)js的函数也是对象,js函数可以像其他对象那样操作(访问属性值)和传递(做为另一个函数的入参),所以我们常叫函数对象;
2)创建函数有3种方式
a)函数声明

function add(a,b){return a + b;
}

b)函数表达式

//函数变量
var add = function(a,b){return a+b;
};
//立即执行函数
(function(){//do sth.
})();
//函数做为返回值
return function(){//do sth.
};
//命名函数表达式
var a = function add(){//do sth.
}

函数声明和函数表达式区别
函数声明会被前置,可以先使用函数再声明
函数表达式需要先定义,再使用

c)Function构造器

var func = new Function('a','b','console.log(a+b);');
func(1,2);//3
var func = Function('a','b','console.log(a+b);');
func(1,2);//3

d)3种方式对比

10)this

//全局this
console.log(this.document === document);
console.log(this === window);
var this.a = 33;
console.log(window.a);//33
//一般函数this
function a() {return this;
}
window === a() // true
//做为对象方法的函数的this
var o = {prop:77,f:function(){return this.prop;}
};
console.log(o.f());//77var o = {prop:55};
function a(){return this.prop;//这里的this指向window
}
o.f = a;
console.log(o.f());//55
//对象原型链上的this
var o = {f:function(){return this.a + this.b;}
}
var p = Object.create(o);//以o做为原型创建对象p
p.a = 8;
p.b = 9;
console.log(p.f());//17
//构造器中的this
function My(){this.a=9;
}
var o = new My();
console.log(o.a);//9function H(){this.a = 9;return {a:88};
}
var o = new H();
console.log(o.a);//88
//call,apply方法和this
//每个函数都有call和apply这两个方法(Function对象的方法)
function a(c,d){return this.a+this.b+c+d;
}
var o = {a:1,b:2};
//call和apply把函数a中的this变为o,
//call和apply区别只是入参不同,call一个一个传,apply传数组,3传给c,4传给d
a.call(o,3,4);//1+2+3+4
a.apply(o,[3,4]);
//call和apply使用场景
function bar(){console.log(Object.prototype.toString.call(this));
}
bar.call(8);//call把函数bar中的this修改为8
//bind和this
//每个函数都有bind方法(Function对象的方法),bind是es5才有,所以ie9+才支持
function f(){return this.a;
}
var g = f.bind({a:99});
console.log(g);//99
var o = {a:8,f:f,g:g
};
console.log(o.f);//8
console.log(o.g);//99

11)闭包

上图右边的例子,outer()函数返回一个函数,执行完outer()函数之后localVal还未释放内存,func()函数调用时可以访问到localVal,这就是一个闭包的现象


上图上面的例子就是闭包常见的错误,for循环里边的 i 是一个全局变量,点击触发点击事件函数时可以访问 i 变量,这时 i 变量的值为4

闭包可以用于封装

12)继承

es3,es5语法记要相关推荐

  1. es5如何实现promise_彻底理解Promise对象——用es5语法实现一个自己的Promise(上篇)...

    众所周知javascript语言的一大特色就是异步,这既是它的优点,同时在某些情况下也带来了一些的问题.最大的问题之一,就是异步操作过多的时候,代码内会充斥着众多回调函数,乃至形成回调金字塔.为了解决 ...

  2. 如何利用babel工具将es6语法转换成es5语法

    如何利用babel工具将es6语法转换成es5语法 一.很多同学疑问既然es6已经出来的了,为很莫写完es6语法还要把他转换成es5,这不是脱裤子放屁吗? ECMAScript 6(ES6)的发展速度 ...

  3. Js(三)将es6语法转换成es5语法

    前言 本章主要讲述将es6语法的js,转换成es5语法 运用场景:由于Jmeter上面只适配es5语法的js,而某朋友公司前端都是写的es6语法的js,为了能在Jmeter上能够兼容,故进行相关转换 ...

  4. gulp es5语法转换及js/css/html压缩过程

    2019独角兽企业重金招聘Python工程师标准>>> 1.在对应的目录安装: 如果没有安装gulp,先安装gulp //全局安装gulp npm install -g gulp / ...

  5. 将ES6的语法转为ES5(为了兼容 ES5) (Babel)

    掌握 ES6 之后,如果你的业务需要考虑 ES5 的兼容性,则可以这样做:写 ES6 语法的 js 代码,然后通过 Babel将 ES6 转换为 ES5.如果没有这样的需要,那么下面的内容,了解即可. ...

  6. es6转化es5普通html页面,JS语法转换-ES6转ES5

    > 虽然我觉得没什么用,但是记一下吧 [TOC] #### 1.新建项目 项目目录结构: ![](https://box.kancloud.cn/1e80da2d1c4c01681a650230 ...

  7. ES6构造函数class语法与ES5构造函数语法

    这段时间在逆战班学习了面向对象相关内容,其中关于构造函数的两种语法我这里说一下. 1.ES5构造函数语法 (1)什么是构造函数呢? 构造函数就是一种专门用于生成对象的函数,通过构造函数生成的对象称为实 ...

  8. 从ES5到ESNext-这是自2015年以来添加到JavaScript的所有功能

    I wrote this article to help you move from pre-ES6 knowledge of JavaScript and get you quickly up to ...

  9. ES5 to ESNext —  自 2015 以来 JavaScript 新增的所有新特性

    type: FrontEnd title: ES5 to ESNext - here's every feature added to JavaScript since 2015 link: medi ...

  10. ES5 ES6基础知识

    ES5语法 数组方法 迭代(遍历)方法:forEach().map().filter().some().every(): array.forEach(function(currentValue, in ...

最新文章

  1. 64位php oracle,64位系统无法加载PHP的oracle扩展问题
  2. 通过Java字节码发现有趣的内幕之String篇(上)(转)
  3. Visio对象插入Word后周围空白过大
  4. 8086的内存分段机制
  5. 服务器性能优化和Mysql性能优化
  6. Python极简代码压缩图像十到百倍
  7. NIOS II 常见问题总结FAQ - xiangyuqxq的专栏 - CSDN博客
  8. Vim编辑器显示行号且定义tab键为4个空格
  9. 悦读上品 得乎益友
  10. Oracle 树操作、递归查询(select…start with…connect by…prior)
  11. python接口调用把执行结果追加到测试用例中
  12. OBJECT_ID(Transact-Sql)
  13. python获取文件修改时间_Python-获取文件最后修改时间 | 学步园
  14. 最全Pycharm教程(6)——将Pycharm作为Vim编辑器使用
  15. 适配4G模块 EC20 使用ppp拨号上网
  16. Python-Excel报表自动化生成报表(二)
  17. 【企业开源】小米开源:站在巨人肩膀上的创新
  18. window系统cmd的常用几条指令
  19. ubuntu安装zsh及环境配置
  20. MySQL 据库管理系统

热门文章

  1. 实验五 CA的安装和使用
  2. 滚轮控制摄像机移动_缩放视角_限制上下限
  3. android中生成 PDF,Android PDF生成
  4. 继电器互锁功能的实现
  5. DOSBOX常用快捷键DEBUG指令
  6. 智障Sloth的第108次启动mininet链接控制器失败的原因
  7. 企业该如何做好IT规划
  8. a级纳税人数据问题记录
  9. 集合问题 : 容斥原理
  10. 纯色图制作APP代码