2015-09-12 2 views
0

Это правильное Машинопись (или ES6, если вы игнорируете статической типизации):ES6 и Машинопись, функция класса свойства без конструктора

class Greeter { 
    greeting: string; 
    constructor(message: string) { 
     this.greeting = message; 
    } 
    greet() { 
     return "Hello, " + this.greeting; 
    } 
} 

var greeter = new Greeter("world"); 

console.log(greeter.greet()); //Hello world 

Но следующее создает Hello undefined, как бы вы переписать это таким образом, это было бы Работа? И если это невозможно, какова была бы альтернатива для достижения этого?

Я просматриваю передаваемые переменные непосредственно в функции.

class Greeter { 
    greet(greeting: string) { 
     return "Hello, " + this.greeting; 
    } 
} 

var greeter = new Greeter(); 

console.log(greeter.greet("world")); //Hello undefined 

UPDATE:

Я имею в виду PHP как использование класса как:

class Greeter { 
    public function greet($greeting){ 
     return $greeting; 
    } 
} 
+0

Почему вы ожидаете, что 'this.greeting' удерживает значение, переданное как параметр,' greet'? –

+0

Возможный дубликат [Javascript: мне нужно поместить this.var для каждой переменной в объект?] (Http://stackoverflow.com/questions/13418669/javascript-do-i-need-to-put-this- var-for-every-variable-in-an-object) – Bergi

+0

'greeting' - это переменная (объявленная как именованный параметр), а не свойство экземпляра. Никакой разницы в ES5, кстати. – Bergi

ответ

3

Вы можете передать переменную в объект для хранения во время выполнения вызова. И вы можете использовать его впоследствии, как показано ниже, без передачи переменной. И затем вы можете изменить его с помощью другого вызова.

class Greeter { 
    greet(greeting: string) { 
     this.greeting = greeting || this.greeting; 
     return "Hello, " + this.greeting; 
    } 
} 

var greeter = new Greeter(); 

console.log(greeter.greet("world")); //Hello world 
console.log(greeter.greet()); //Hello world 
console.log(greeter.greet("es6")); //Hello es6 
+0

Jeah, спасибо, помощник! Делает полный смысл. –

+1

Вы можете использовать параметр по умолчанию, чтобы сделать эту работу: http://goo.gl/Ygu6QF –

+0

Я действительно получаю «Имущество не exsist», никаких мыслей? Пример: http://goo.gl/2Q6mEK –

Смежные вопросы