关键词

js中继承的几种用法总结(apply,call,prototype)

JS中继承的几种用法总结(apply, call, prototype)

在JavaScript中,继承是一种通过一个对象获取另一个对象属性和方法的方式。在JavaScript的原始版本中,没有标准的面向对象编程方式,但是通过使用JavaScript中的一些基本原则和技巧,我们可以轻松地实现继承。

在JavaScript中,我们可以使用apply,call以及原型链继承方式来实现对象的继承。接下来我们将对这些继承方式进行详细介绍。

  1. apply与call的继承方式

apply和call是两种JS中调用函数的方式,它们可以改变函数执行时的上下文环境。其中,apply方法可以给一个对象的属性或方法赋值,使用方法是:apply(thisObj, args)。

下面是apply方法继承的代码示例:

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

function Student(name, age) {
  Person.apply(this, [name]);
  this.age = age;
}

var s = new Student("张三", 18);
console.log(s.name); //输出张三
console.log(s.age); //输出18

这里,Student继承了Person的属性和方法,通过调用Student函数的apply方法,将Person对象的属性和方法复制给Student对象。

同样,有一个call方法,使用方法是:call(thisObj, arg1, arg2, ...),它也可以实现继承。

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

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

var s = new Student("张三", 18);
console.log(s.name); //输出张三
console.log(s.age); //输出18

相比于apply,call的使用方法略有不同,更适合参数刚好相符的情况。

  1. 原型链继承

原型链继承是指在子类中通过prototype对象引用父类的prototype属性,从而实现继承。

function Person(name) {
  Person.prototype.name = name;
}

function Student(age) {
  this.age = age;
}

Student.prototype = new Person("张三");

var s = new Student(18);
console.log(s.name); //输出张三
console.log(s.age); //输出18

这里,子类Student通过prototype对象继承了父类Person的属性和方法,从而实现了继承。

总结:

在JavaScript中,我们可以通过使用apply,call和原型链方式来实现对象的继承。其中,apply和call的使用方法相对较为简单,但是只能继承属性,而无法继承方法。原型链继承方式复杂一些,但可以同时继承属性和方法。

本文链接:http://task.lmcjl.com/news/10020.html

展开阅读全文