JavaScript中的原型继承和类继承

JavaScript是一门弱类型语言,采用的是基于原型的继承方式。在JavaScript中,有两种继承方式:原型继承和类继承。


原型继承

原型继承是JavaScript中最基本的继承方式,它是通过原型链来实现的。在JavaScript中,每个对象都有一个原型对象,而原型对象也可以有自己的原型对象,这样就形成了一条原型链。如果我们访问一个对象中的某个属性或方法,但该对象本身并没有这个属性或方法,它就会沿着原型链一直往上查找,直到找到为止。

下面是原型继承的一个简单案例:

function Person(name, age) {
  this.name = name;
  this.age = age;
}

Person.prototype.sayHi = function() {
  console.log('Hi, my name is ' + this.name);
};

var p = new Person('Tom', 18);
p.sayHi(); // Hi, my name is Tom

在上面的代码中,我们定义了一个Person构造函数,并将它的原型对象上添加了一个sayHi方法。然后我们创建了一个p对象,并调用了它的sayHi方法。由于p对象本身没有sayHi方法,它就会沿着原型链一直往上查找,最终找到了Person构造函数的原型对象上的sayHi方法,并成功调用了它。


类继承

类继承是ES6中新增的继承方式,它是通过class关键字来实现的。在ES6中,我们可以通过extends关键字来实现类的继承,子类可以继承父类的属性和方法,并且可以自己定义新的属性和方法。

下面是类继承的一个简单案例:

class Person {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }
  sayHi() {
    console.log('Hi, my name is ' + this.name);
  }
}

class Student extends Person {
  constructor(name, age, grade) {
    super(name, age);
    this.grade = grade;
  }
  study() {
    console.log('I am studying in grade ' + this.grade);
  }
}

var s = new Student('Tom', 18, 3);
s.sayHi(); // Hi, my name is Tom
s.study(); // I am studying in grade 3

在上面的代码中,我们定义了一个Person类,并在它的原型对象上添加了一个sayHi方法。然后我们定义了一个Student类,并通过extends关键字继承了Person类。在Student类中,我们定义了一个study方法,并在其构造函数中调用了父类的构造函数,并添加了新的属性grade。最后我们创建了一个s对象,并成功调用了它的sayHi方法和study方法。


函数使用细节

在JavaScript中,函数是第一类对象,可以像其他对象一样被传递、赋值、作为参数或返回值进行操作。在使用函数时,还需要注意以下细节:

  • 函数名可以被覆盖:如果我们将一个新的函数赋值给一个已有的函数名,那么原来的函数就会被覆盖。
  • 函数可以作为参数传递:我们可以将函数作为参数传递给另一个函数,这样可以实现一些高阶函数的功能。
  • 函数可以作为返回值返回:我们可以在一个函数中返回另一个函数,这样可以实现一些闭包的功能。

代码案例

下面是一些常用的函数使用案例:

// 判断是否为函数
function isFunction(fn) {
  return typeof fn === 'function';
}

// 判断是否为数组
function isArray(arr) {
  return Array.isArray(arr);
}

// 判断是否为对象
function isObject(obj) {
  return typeof obj === 'object' && obj !== null;
}

// 判断是否为字符串
function isString(str) {
  return typeof str === 'string';
}

// 数组去重
function unique(arr) {
  return Array.from(new Set(arr));
}

在上面的代码中,我们定义了一些常用的函数,并实现了相关的功能。这些函数可以帮助我们简化代码,提高开发效率。


总之,JavaScript中的原型继承和类继承是非常重要的概念,对于编程小白来说,理解它们的使用方法和细节非常有帮助。同时,熟练掌握函数的使用方法也是非常重要的,它可以帮助我们更加高效地编写代码。

猿教程
请先登录后发表评论
  • 最新评论
  • 总共0条评论