Przykład pisania w kodzie JavaScript?
Niektórzy programiści odradzają używanie pseudo klasycznego dziedziczenia w Javascript, ale radzą używać kaczego pisania i nadawania każdemu obiektowi zestawu możliwości.
Czy istnieje dobry przykład tego, jak to się robi? Mam przykład poniżej, ale przypisuje on tylko funkcję pojedynczo. Czy możemy przypisać obiektowi całą grupę metod, na przykład możemy ustawić prototypOceanAnimal
które mogą „pływać”, „nurkować” i „wznosić się”, prototypLandAnimal
na „run”, „walk” i „jump” i pozwól, aby obiekt odziedziczył po jednym lub obu? (więc obiekt ryb może dziedziczyć lub uzyskać możliwościOceanAnimal
, a żółw może uzyskać możliwości obuOceanAnimal
iLandAnimal
?)
var yoyo = {
name: "Yoyo",
type: "turtle"
}
var simba = {
name: "Simba",
type: "lion"
}
var dolphy = {
name: "Dolphy",
type: "dolphin"
}
function swim(n) {
console.log("My name is", this.name, ", I am a", this.type, "and I just swam", n, "feet")
}
function run(n) {
console.log("My name is", this.name, ", I am a", this.type, "and I just ran", n, "feet")
}
Object.prototype.respondTo = function(method) {
return !!(this[method] && (typeof this[method] === "function"));
}
yoyo.swim = swim;
yoyo.swim(10);
dolphy.swim = swim;
dolphy.swim(80);
simba.run = run;
simba.run(200);
yoyo.run = run;
yoyo.run(2);
yoyo.walk = run;
yoyo.walk(1);
console.log(simba.respondTo("swim"));
console.log(simba.respondTo("run"));
console.log(simba.respondTo("walk"));
console.log(yoyo.respondTo("run"));
console.log(yoyo.respondTo("walk"));
console.log(yoyo.respondTo("fly"));
if(dolphy.respondTo("run")) {
dolphy.run(10);
}
if(dolphy.respondTo("swim")) {
dolphy.swim(10);
}
wydajność:
My name is Yoyo , I am a turtle and I just swam 10 feet
My name is Dolphy , I am a dolphin and I just swam 80 feet
My name is Simba , I am a lion and I just ran 200 feet
My name is Yoyo , I am a turtle and I just ran 2 feet
My name is Yoyo , I am a turtle and I just ran 1 feet
false
true
false
true
true
false
My name is Dolphy , I am a dolphin and I just swam 10 feet