我并不是很理解伪经典继承和原型继承的区别。看一下下面的代码片段。
原型继承:我能够理解这段代码(道格拉斯·克罗克福德)。我已经更改了类名,并添加了实现以便更好地理解,因为他的代码块在展示时不完整。
var baseObject = {
a : "old",
firstMethod: function () {alert("First method");},
secondMethod: function () {alert("Second method");}
};
var derivedObject = Object(baseObject);
alert(derivedObject.a);
derivedObject.thirdMethod = function () {alert("Third method");};
var derivedChildObject = Object(derivedObject);
derivedChildObject.firstMethod();
derivedChildObject.secondMethod();
derivedChildObject.thirdMethod();
伪经典:
由于他的演示代码片段中的方法不完整,我没有得到清晰的理解,因此我去了互联网上的其他链接。
http://javascript.info/tutorial/pseudo-classical-pattern
function Animal(name) {
this.name = name
}
Animal.prototype = {
canWalk: true,
sit: function() {
this.canWalk = false
alert(this.name + ' sits down.')
}
}
var animal = new Animal('Pet') // (1)
alert(animal.canWalk) // true
animal.sit() // (2)
alert(animal.canWalk) // false
伪类的方案:
默认属性和方法都在原型中。原型中的方法使用this,因为this的值仅取决于调用上下文,所以animal.sit()会将this设置为animal。
你能否帮我提供正确的例子?你可以参考Animal用例或baseObject用例,也可以自己想出一个例子。