虽然我有一些 jQuery 和 JavaScript 的工作经验,但我仍然觉得很难理解原型继承。因此,我开始阅读 Stoyan Stefanov 的《面向对象的 JavaScript》一书。但是,我在解决书中的以下练习时遇到了问题:
- 创建一个
shape
具有type
属性和getType
方法的名为的对象。 - 定义一个
Triangle
原型为 shape 的构造函数。创建的对象Triangle
应具有三个自己的属性:a
和b
表示c
三角形的边。 - 向原型添加一个名为
getPerimeter
.
使用以下代码测试您的实现:
var t = new Triangle(1, 2, 3);
t.constructor; // Triangle(a, b, c)
shape.isPrototypeOf(t); // true
t.getPerimeter(); // 6
t.getType(); // "triangle"
我试图用以下代码解决这个问题:
shape = {
type : "",
getType: function(){
return this.type;
}
};
function Triangle(a, b, c) {
}
Triangle.prototype = shape;
但是,它似乎没有按预期工作。你将如何解决这个问题?请详细说明。我真的很想了解原型继承。