前言
最近几个月忙着做公司的项目重构,坑比较多,项目重构没有使用任何框架(vue或react),而是采用原生html + js + jQuery的形式,js基础还是很重要的,所以整理了一下自己刚入职时学习犀牛书的学习笔记。
第一章:JavaScript概述
通过方括号定义数组元素和通过花括号定义对象属性名和属性值之间的映射 关系的语法称为初始化表达式。
表达式是JavaScript中的一个短语,这个短语可以通过运算得出一个值。 通过" . "和" [ ]"来引用对象属性或数组元素的值就构成一个表达式。
JavaScript中短语是表达式的话,整个句子则称为语句(statement),以 分号结束的行均是一条语句。
语句分类:
变量声明语句
赋值语句
控制结构(如条件判断、循环等)
注:JavaScript 中的所有事物都是对象:字符串、数字、数组、日期,等等。 在 JavaScript 中,对象是拥有属性和方法的数据。
属性是与对象相关的值。
方法是能够在对象上执行的动作。
变量:
let x;
x = 0;
x = 0.01;
x = "hello"
x = 'hello' (注:单引号和双引号中都可以构成字符串)
x = true;
x = false;
x = null;
x = undefined;
对象:
let book = {topic: "javascript",
fat: true };
book.topic //通过.访问对象属性
book["fat"] //通过[]访问对象属性
book.author = "YH"; //通过赋值给对象新添属性
book.contents = {}; //{}是一个空对象,它没有属性
数组(下标以0开始):
let primes = [2,3,5,7];
primes[0];
primes.length;
primes[4] = 9; //添加第五个元素
let empty = [];
empty.length
数组中包含对象:
//具有两个对象的数组
let points = [ {x : 0, y : 0}, {x : 1, y : 1} ];
对象中包含数组:
//包含两个属性的对象,每个对象都是一个一维数组(对象中也可以是二维数 组)
let data = { t1 : [1,2,3], t2 : [4,5,6]};
函数:
//此种函数是单独函数
function plus(x) {
return x+1;
}
plus(1); //输出结果:2
//此种函数为赋值函数
let square = function(x){ return x*x; };
//将函数与对象合写在一起时,函数变成“方法”(method):
let a = [ ]; //创建空数组
a.push(1,2,3); //向数组中添加元素
a.reverse(); //将数组元素的次序反转
//自定义方法--使用this关键字对定义方法的数组对象进行引用:
points.dist = function(){
let p1 = this[0];
let p2 = this[1];
let x = p2.x - p1.x;
let y = p2.y - p1.y;
return Math.sqrt(x*x + y*y);
}
//调用方法:
points.dist()
控制语句:
//求绝对值
function abs(x){
if (x >= 0){
return x;
}else {
return - x;
}
}
//或使用Math对象调用abs() 方法:
let x = -9;
Math.abs(x)
计算阶乘:
function factorial(x){
let p = 1;
for(var i = 1; i <= x; i++){
p *= i;
}return p;
}
//或:
function factorial2(n){
let product = 1;
while(n >= 2){
product *= n;
n--;
}
return product;
}
类:
//定义构造函数初始化一个新的Point对象
function Point(x, y){
this.x = x;
this.y = y;
}
//给Point对象定义方法
Point.prototype.dist = function(){
return Math.sqrt( this.x * this.x + this.y * this.y);
};
//使用new关键字创建Point对象的实例
let p = new Point(1, 1);
//通过对象实例调用方法
p.dist()
prototype:
在JavaScript中,prototype对象是实现面向对象的一个重要机制。每个函
数就是一个对象(Function),函数对象都有一个子对象 prototype对象,类
是以函数的形式来定义的。prototype表示该函数的
原型
,也表示一个类的成员
的集合。将函数用作构造函数调用(使用new操作符调用)的时候,新创建的对
象会从原型对象上
继承
属性和方法。