JavaScript all in one

| 分类 FRONTEND  | 标签 javascript 

基础概念

数据类型

  1. js 的数据类型分为两种:基本类型和引用类型。
  2. 基本类型包含两种:第一种:undefined, null,这两个值就是两个字面量。第二种:string, number, boolean,第二种类型有对应的对象包装类型。
  3. 引用类型 object。有一些内置的类型如:Array, RegExp, Math, Date, Function。

作用域

  1. js 的作用域分为两种:全局作用域,函数作用域。
  2. 全局作用域只有一个:global 这也是 node.js 的全局作用域。浏览器实现了一个 window 对象,其中包含了 global,所以浏览器的全局作用域是 window。
  3. js 的函数可以嵌套。因此就形成了作用域链,从当前函数一直往外,最外层就是全局作用域。
  4. 函数就是 Funcation 的一个对象,是一个指针,函数绑定到那个变量上,函数内的 this 就指向它,例如,自定义的函数,是默认绑定在 global 上的,这时 this 就指向global。

全局对象绑定的函数

global 对象绑定了很多函数,这些函数可以直接使用:

encodeURI();
encodeURIComponent();
decodeURI();
decodeURIComponent();
isNaN();
parseInt();
parseFloat();

对象

js 语言没有类。ECMAScript 对对象定义如下:

无序属性的集合,其属性可以包含基本值、对象或者函数。

即对象就像一个散列表:无非就是一组名值对,其中值可以是数据或函数。

创建对象的演进

最简单的方式

  1. 创建一个 object 实例,为它添加属性和方法。
  2. 使用字面量创建。
// 用 Object 创建对象
var person1 = new Object();
person1.name = "vincen";
person1.age = 30;
person1.sayHello = function() {
  console.log("hello" + this.name);
};

// 用字面量创建对象
var person2 = {
  name 	   : "vincen",
  age  	   : 30,
  sayHello : function() {
  	console.log("hello" + this.name);
  }
}

以上两种方式是最简单的方式。缺点:如果创建很多对象时,会产生大量的重复代码。

工厂模式

因为 js 中没有类,作为代替,用函数封装了创建对象的细节。如下例:

function createPerson(name, age) {
  var o = new Object();
  o.name = name;
  o.age = age;
  o.sayHello = function() {
    console.log("hello" + this.name);
  }
  return o;
}
var person3 = createPerson("vincen", 30);

工厂模式解决了重复代码的问题。缺点:没有解决对象识别的问题(即怎样知道一个对象的类型)。

构造函数模式

创建自定义的构造函数,即可以把它的实例标识为一种特定类型。

function Person(name, age) {
  this.name = name;
  this.age = age;
  this.sayHello = function() {
    console.log("hello" + this.name);
  }
}
var person4 = new Person("vincen", 30);

console.log(person4 instanceof Person);		// true

异步编程

https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Asynchronous

Promise

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise


上一篇     下一篇