JavaScript--面向对象原型继承
Posted Z && Y
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript--面向对象原型继承相关的知识,希望对你有一定的参考价值。
1. 面向对象原型继承
面向对象编程
javascript的面向对象编程和大多数其他语言如Java、C#的面向对象编程都不太一样。如果你熟悉Java或C#,很好,你一定明白面向对象的两个基本概念:
所以,类和实例是大多数面向对象编程语言的基本概念。
在JavaScript中,这个概念需要改一改。JavaScript不区分类和实例的概念,而是通过原型(prototype)来实现面向对象编程。
原型是指当我们想要创建 xiaoming 这个具体的学生时,我们并没有一个 Student 类型
可用。那怎么办?恰好有这么一个现成的对象:
let robot = {
name: 'Robot',
height: 1.6,
run: function () {
console.log(this.name + ' is running...');
}
};
let Student = {
name: 'Robot',
height: 1.2,
run: function () {
console.log(this.name + ' is running...');
}
};
let xiaoming = {name: '小明'};
xiaoming.__proto__ = Student;
xiaoming.run();// 小明 is running...
JavaScript的原型链和Java的Class区别就在,它没有“Class”的概念,所有对象都是实例,所谓继承关系不过是把一个对象的原型指向另一个对象而已。
如果你把 xiaoming 的原型指向其他对象:
let Bird = {
fly: function () {
console.log(this.name + ' is flying...');
}
};
let xiaoming = {name: '小明'};
xiaoming.__proto__ = Bird;
xiaoming.fly();// 小明 is flying...
在JavaScrip代码运行时期,你可以把 xiaoming 从 Student 变成 Bird ,或者变成任何对象。
let Student = {
name: 'Robot',
height: 1.2,
run: function () {
console.log(this.name + ' is running...');
}
};
let xiaoming = {name: '小明'};
xiaoming.__proto__ = Student;
xiaoming.run();// 小明 is running...
let Bird = {
fly: function () {
console.log(this.name + ' is flying...');
}
};
xiaoming.__proto__ = Bird;
xiaoming.fly();// 小明 is flying...
以上是关于JavaScript--面向对象原型继承的主要内容,如果未能解决你的问题,请参考以下文章