var Animal = function(config) {
config = config || {};
var name = config.name,
numLegs = config.numLegs,
weight = config.weight,
speed = config.speed,
sound = config.sound
return {
getName: function() {
return name;
},
getNumLegs: function() {
return numLegs;
},
getWeight: function() {
return weight;
},
getSpeed: function() {
return speed;
},
getSound: function() {
return sound;
},
run: function(distance, unit) {
unit = unit || 'miles';
return 'The ' + name + ' ran ' + distance + ' ' + unit;
},
speak: function() {
return 'The ' + name + ' says "' + sound + '"';
}
}
};
function DragonFly(config) {
var me = {},
numWings = config.numWings;
me.prototype = new Animal(config);
me.getNumWings = function() {
return numWings;
};
me.fly = function(distance, unit) {
unit = unit || 'miles';
return 'The ' + me.name + ' flew ' + distance + ' ' + unit;
}
return me;
}
var dragonFly = new DragonFly({
numWings: 2,
name: 'DragonFly',
numLegs: 6
});
PHPの背景から来て、私はJavaScriptの継承を1ビット分理解できず、助けてください。コンストラクタメソッドでJavaScriptで継承を使用する方法プライベートプロパティでオブジェクトリテラルを返すか?
は基本的に、ここで私はトンボオブジェクトのインスタンスで行うことができるようにしたいものです。
dragonFly.getName(); // 'DragonFly'
dragonFly.fly(1, 'mile'); // 'The dragonfly flew 1 mile';
dragonFly.run(1, 'yard'); // 'The dragonfly ran 1 yard';
私はまた、メソッドをオーバーライドし、オーバーライドし、それらの親を呼び出す方法を知りたいですメソッド。私のアプローチで何が間違っていますか?上記の例はすべてundefinedを返すか、エラーをスローします。私がオブジェクトリテラルスタイルを使用した主な理由は、プロパティをプライベートにすることができるためです。
あなたの 'dragonfly.getName()'に入力ミスがあります。 – Joseph
@Joseph Fixed。ありがとう。 –