JS中继承的几种用法总结(apply, call, prototype)
在JavaScript中,继承是一种通过一个对象获取另一个对象属性和方法的方式。在JavaScript的原始版本中,没有标准的面向对象编程方式,但是通过使用JavaScript中的一些基本原则和技巧,我们可以轻松地实现继承。
在JavaScript中,我们可以使用apply,call以及原型链继承方式来实现对象的继承。接下来我们将对这些继承方式进行详细介绍。
- 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的使用方法略有不同,更适合参数刚好相符的情况。
- 原型链继承
原型链继承是指在子类中通过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的使用方法相对较为简单,但是只能继承属性,而无法继承方法。原型链继承方式复杂一些,但可以同时继承属性和方法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js中继承的几种用法总结(apply,call,prototype) - Python技术站