2016-04-27 10 views
1

Ich versuche, 2 Objekte aus meinen 2 Klassen, ein Person-Objekt und ein Getränk-Objekt zu machen, dann möchte ich meine trinken Methode ein Getränk Objekt übergeben, aber ich weiß nicht wie, wie kann ich das machen? hier ist mein Code, ich kann nicht sehen, warum es nicht funktioniertJavascript mit einer Objekt-Methode in ein anderes Objekt

function Drink(full, alcoholic){ 
    this.alcoholic = alcoholic; 
    this.full = full; 
} 

function Person(name, age) { 
    this.name = name; 
    this.age = age; 
    this.drinking = function drinking(Drink) { 
     if (age >= 18) { 
      this.Drink.full = false; 
     } else { 
      console.log("you cannot drink because of your age") 
      this.Drink.full=true; 
     }; 
    } 
} 

John = new Person("John",24); 
Sam = new Person("Sam",2); 
x = new Drink(true,true); 

console.log(x) 
console.log(John.drinking(x)) 
console.log(Sam.drinking(x)) 
+1

Was genau nicht funktioniert? Was erwarten Sie? –

+0

Es ist nur 'Trinken', wenn du auf den Parameter verweisen willst, nicht' this.Drink' – Bergi

Antwort

1

diese entfernen auf this.Drink

function Drink(full,alcoholic){ 
    this.alcoholic = alcoholic; 
    this.full = full; 
} 

function Person(name,age){ 
    this.name = name; 
    this.age = age; 
    this.drinking= function drinking(drink) { 
    if (age>=18) { 
     drink.full=false;  
    } else { 
     console.log("no puede tomar") 
     drink.full=true; 
    }; 
    } 
} 

John = new Person("John",24); 
Sam = new Person("Sam",2); 
x = new Drink(true,true); 

console.log(x) 
console.log(John.drinking(x)) 
console.log(Sam.drinking(x)) 
+0

Noch besser, benutz ''trink' stattdessen, damit es keine Namenskollisionen gibt ... –

+0

Yeah Mike, du bist Recht. Bearbeitet :) – fdfey

+0

Im Gegensatz dazu möchten Sie vielleicht auch 'this.age' anstelle von' age' verwenden. – Bergi

Verwandte Themen