原型链

面向对象编程

ES5实现
function Star(uname, height, weight) {
this.uname = uname;
this.height = height;
this.weight = weight
this.say = function () {
console.log(`我是${this.uname},我身高${this.height}厘米,体重${this.weight}公斤`)
}
}
var ldh = new Star("刘德华", 174, 64)
ldh.say()
var lyf = new Star("刘亦菲", 170, 80)
lyf.say()
定义一个构造函数Circle,里面有两个方法area和length,分别计算圆的面积和周长
ES6实现

//定义一个类
class Star {
//构造函数
constructor(uname, height, weight) {
//this指向实例化对象
this.uname = uname;
this.height = height;
this.weight = weight;
}
say() {
return `我是${this.uname},身高${this.height}厘米,体重${this.weight}公斤`
}
}
var ldh = new Star("刘德华", 185, 80)
console.log(ldh.say())
定义一个构造函数Circle,里面有两个方法area和length,分别计算圆的面积和周长
class Circle {
constructor(r) {
this.r = r
}
//计算周长
length() {
return (2 * Math.PI * this.r).toFixed(2)
}
//计算面积
area() {
return (Math.PI * r ** 2).toFixed(2)
}
}
console.log(new Circle(4).length())
console.log(new Circle(4).area())
ES6继承

// 父类 Person
class Person {
constructor(uname, age) {
//属性
this.uname = uname;
this.age = age
}
//方法
say() {
return `我是${this.uname},我年龄${this.age}岁`
}
}
//子类Student
class Student extends Person {
constructor(uname, age) {
// this.uname = uname;
// this.age = age;
super(uname, age)
}
}
var s1 = new Student("小红", 18)
console.log(s1.say())
//子类Teacher
递归
在一个函数内部调用自身
function fun(){
fun()
}
阶乘
/*****
* 递归:在函数内部调用自己
* 使用递归:一定要有退出条件
*
* ******/
var n = 1;
function fun() {
if (n > 6) return;
console.log("我喜欢写代码")
n++
fun()
}
fun()
求阶乘
// 求阶乘 5!=5*4*3*2*1
function fun(n) {
if (n == 1) return 1
return n * fun(n - 1)
}
fun(5)
斐波那契数列
闭包
-
闭包的定义
有权访问另一个函数作用域中变量的函数
简单理解:一个作用域可以访问另一个函数内部的变量
-
闭包的原理
-
闭包的使用场景
字符串常用方法
- 复制
- 查找
- 删除
- 切割
数组常用方法
- 字符串和数组的转化
- 增删改查
- 数组结构
- 数组转对象
对象常用方法
-
对象合并
Object.assgin()
-
对象解构
-
对象转数组
进制转换
-
十进制转二进制
十进制 569 ===>二进制
-
十进制转八进制
十进制 1000 ===>八进制
这篇博客探讨了JavaScript中的面向对象编程,通过ES5和ES6两种方式实现构造函数和方法。讲解了如何定义`Star`类并创建实例,以及创建`Circle`类来计算圆的面积和周长。进一步阐述了ES6中的继承机制,以`Person`和`Student`为例展示了类的继承。此外,还提到了递归的概念,并给出了阶乘和斐波那契数列的递归实现。
1776





