美文网首页
ES5知识点整理

ES5知识点整理

作者: 大狗奇 | 来源:发表于2017-03-21 15:29 被阅读135次

基本语法

基本语法包括数据类型,操作符,语句,函数

数据类型

5种简单数据类型(基本数据类型)Undefined、Null、Boolean、Number、String

和一种复杂数据类型Object,是所有对象的基础

typeof 操作符检定给定变量的数据类型

JavaScript不区分整数和浮点,Number类型可用于保存所有数值

操作符

常用 : 算数操作符,布尔操作符,赋值操作符

布尔操作符:与或非 && || !

控制语句

常用 : if语句 for语句 switch语句

函数

函数用来封装多条语句

函数可以在任何时候返回任何值

函数的参数以数组形式传递,可以接受任意参数,可以通过arguments对象来访问这些参数。

变量和作用域

JavaScript包含基本类性值和引用类型值。

基本类型在内存中是实际的值,引用类型在内存中就是一个指针,指向一个对象,多个引用类型可能同时指向同一个对象。

检测基本类型用typeof 检测对象类型使用instanceof

所有变量都存在与作用域当中,作用域决定了变量的生命周期。

函数的局部环境有权访问函数作用域中的变量和父环境到全局变量

JavaScript没有块级作用域

引用类型

Object : 基础类型,其它所有类型都从Object继承

Array : 数组类型,每一项可以保存任何数据

转换方法 栈方法 队列方法 重排序方法 操作方法 位置方法 迭代方法 归并方法

Date : 日期类型

RexExp : 正则表达式

面对对象程序设计

创建自定义类型最常见的方式是组合使用构造函数模式与原型模式,构造函数模式用于定义实例属性,原型模式用于定义方法和共享的属性。

// 构造函数
function Person(name, age, job) {
    this.name = name;
    this.age = age;
    this.job = job;
    this.friends = ["Shelby", "Court"];

}
// 原型
Person.prototype = {
    constructor: Person,
    sayName: function() {
        return this.name;
    }
}
// 实例化
var person1 = new Person("Nicholas", 29, "Software Engineer");
var person2 = new Person("Greg", 27, "Doctor");

person1.friends.push("Van");
alert(person1.friends);                     //输出"Shelby,Count,Van"
alert(person2.friends);                     //输出"Shelby,Count"
alert(person1.friends === person2.friends);        //输出false
alert(person1.sayName === person2.sayName);        //输出true

继承

原型链是实现继承的主要方法

将父类实例赋值给子类构造函数的原型

// 父类
function SuperType() {
    this.property = true;
}
SuperType.prototype.getSuperValue = function() {
    return this.property;
};

// 子类
function SubType() {
    this.subproperty = false;
}

SubType.prototype = new SuperType();

//给子类添加新方法
SubType.prototype.getSubValue = function() {
    return this.subproperty;
};
//重写父类的方法
SubType.prototype.getSuperValue = function() {
    return false;
};

// 实例化
var instance = new SubType();
console.log(instance.getSuperValue()); //输出false

函数表达式

执行代码之前会先读取函数声明

递归

函数表达式递归

var factorial = (function f(num) {
    if (num <= 1) {
        return 1;
    } else {
        return num * f(num - 1);
    }
});
var anotherfactorial=factorial

factorial=null

console.log(anotherfactorial(3))    //输出6

闭包

一个函数可以访问另一个函数作用域中的变量,那么前者就叫做闭包。

创建闭包最常见的方式就是在函数内部创建函数

闭包可以封装变量或者模拟块级作用域

闭包的缺陷:

function createFunctions () {

var result = new Array()

for (var i=0 ; i<10 ; i++) {

    result[i] = function() {

        return i
    }
}
return result
}
//想要的效果是每个函数都返回自己的索引值,但实际上每个函数都返回10

//本质是子函数对父函数的引用是父函数运行结束之后的状态,要使用运行时候的状态就应该在加上自执行

function createFunctions {

var result= new Array();

for (var i = 0; i < 10; i++) {

    result[i] = function(num) {

        return function() {

            return num;
        };
    }(i);
}
return num;
}

封装

JavaScript并没有块级作用域的概念,只有全局作用域和函数作用域,那么如果想要创建块级作用域的话,我们可以通过闭包来模拟。

创建并立即调用一个函数,就可以封装一个块级作用域。该函数可以立即执行其中的代码,内部变量执行结束就会被立即销毁。

function outputNumbers(count) {

(function() {
    for (var i = 0; i < count; i++) {
        alert(i);
    }
})();
// i在外部不可用,便有了类似块级作用域
alert(i); //报错
}

静态私有变量

(function() {
//私有变量和私有函数

var privateVariable = 10;

function privateFunction() {

    return false;

}

//构造函数

MyObject = function() {};

//公有/特权方法

MyObject.prototype.publicMethod = function() {

    privateVariable++;

    return privateFunction();

};

需要注意的是,这个模式在定义构造函数时没有使用函数声明,在严格模式下会导致错误

总结

以上是我从《JavaScript高级程序设计》阅读后的总结,并不是我想象中的高级设计,完全是ES5跳坑指南啊( `д′)

最近刚开始看ES6,越来越嫌弃ES5了,闭个毛线包啊,立即执行毛线啊,let不好吗!

(ノಠ益ಠ)ノ彡┻━┻

相关文章

  • ES5知识点整理

    基本语法 基本语法包括数据类型,操作符,语句,函数 数据类型 5种简单数据类型(基本数据类型)Undefined、...

  • Javascript知识点汇总

    ES5知识点按层级汇总回顾,通过这个层级关系把知识点关联起来,实际使用时通过项目来融合解决问题。 第一层:ES5、...

  • vue响应式原理的简单了解(一)

    知识点 Object.defineProperty() Object.defineProperty是ES5提供的方...

  • ife.baidu笔记 | 动态数据绑定(一)

    动态数据绑定(一) 题目 作业源码 考察知识点: Object.defineProperty(ES5) , Obj...

  • es5数组及对象处理方法

    index es5数组及对象处理方法 __veblen es6已经出来了,为什么还要整理es5?因为知识不是跳跃的...

  • react学习(2)

    知识点 1:babel.js的作用:ES6=>ES5,jsx=>js2:小案例

  • ES6零碎知识点回顾

    整理一下ES6相关的知识点 ES6默认开启严格模式 严格模式在es5中就已经有了,但是是可选的.在es6中,一定是...

  • 原型与原型链以及继承

    今天复习下原型与原型链的知识,以及记录新学的继承知识点。 知识点纲要 原型与原型链 es5与es6继承 什么是原型...

  • JavaScript的继承

    前言 忘了整理的理一理。 ES5继承 先不涉及ES6的继承,后面会涉及。这里主要是ES5的继承: 原型链继承 构造...

  • 04. typescript类

    学习typescript前,大家可以先回忆一下es5中的相关知识点 例如: 对象冒充继承 原型链继承 原型链+对象...

网友评论

      本文标题:ES5知识点整理

      本文链接:https://www.haomeiwen.com/subject/ntdgnttx.html