Javascript简单实现面向对象编程继承实例代码
JavaScript面向对象编程中的继承实例
在JavaScript中,面向对象编程的四大基本特征——封装、聚合、继承和多态,使得我们可以轻松地模拟现实世界中的对象和行为。今天,我将为大家分享一个简单的JavaScript继承实例代码。
设想我们有两个类,ClassA和ClassB。ClassA是一个基础类,拥有颜色和说颜色的功能。当我们创建一个ClassA的实例时,它可以告诉我们它的颜色。ClassB则是一个继承自ClassA的子类,除了拥有父类的颜色属性及说颜色的功能外,还有自己的名字以及说名字的功能。
以下是这两个类的JavaScript代码实现:
```javascript
// 父类ClassA
function ClassA(sColor) {
this.color = sColor;
this.sayColor = function() {
document.write("Color: " + this.color + "
");
};
}
// 子类ClassB,继承自ClassA
function ClassB(sColor, sName) {
// 通过调用ClassA的构造函数,实现继承
ClassA.call(this, sColor);
this.name = sName;
this.sayName = function() {
document.write("Name: " + this.name + "
");
};
}
// 创建ClassA的实例,并调用sayColor方法
var oClassA = new ClassA("Red");
oClassA.sayColor();
// 创建ClassB的实例,并调用sayColor和sayName方法
var oClassB = new ClassB("Blue", "Jimmy.Yang");
oClassB.sayColor(); // 继承自ClassA的sayColor方法
oClassB.sayName(); // ClassB独有的sayName方法
```
在这个例子中,我们通过使用`call`函数,使得ClassB能够继承ClassA的所有属性和方法。这样,ClassB的实例不仅可以说出自己的颜色(继承自ClassA),还可以说出自己的名字(自己独有的方法)。这个例子充分展示了JavaScript中的继承机制。
我还想分享一个关于`call`函数的使用示例。`call`函数可以用来调用一个函数,并为其指定一个上下文对象。下面是一个简单的演示:
```javascript
function sayColor(sPrefix, sSuffix) {
alert(sPrefix + this.color + sSuffix); // 使用alert来显示信息
}
var obj = new Object(); // 创建一个空对象作为上下文对象
sayColor.call(obj, "The color is ", ", a very nice color indeed."); // 调用sayColor函数并指定上下文对象obj
```
在这个例子中,我们创建了一个空对象`obj`作为`sayColor`函数的上下文对象,并使用`call`函数来调用它。这样,函数内部的`this`关键字就指向了我们指定的对象`obj`。这个例子中演示了如何使用`call`函数来改变函数的执行上下文。希望这些示例能帮助大家更好地理解JavaScript中的继承和函数调用的机制。