0

https://gist.github.com/Integralist/5736427Как создать свойства для шаблона проектирования стратегии в javascript?

Эта часть кода по приведенной выше ссылке дает мне проблемы. фона: бег в расширении хромированного под «использовать жесткое» условие

var Greeter = function(strategy) { 
    this.strategy = strategy; 
}; 

// Greeter provides a greet function that is going to 
// greet people using the Strategy passed to the constructor. 
Greeter.prototype.greet = function() { 
    return this.strategy(); 
}; 

Я думаю, что нужно создать свойство «приветствовать», но не знает, как.

Я получаю ошибку о том, «не может установить свойство„поздороваться“неопределенным»

Как я могу создать свойство приветствие и получить код для работы?

Спасибо!

ОБНОВЛЕНИЕ это, как мой код в моем расширения

var MessageHandling = new function(strategy) { 
    this.strategy = strategy; 
}; 
MessageHandling.prototype.greet = function() { 
    return this.strategy(); 
}; 
//Later 
var openMessage = new MessageHandling(openMessageAnimationStrategy); 
openMessage.greet(); 
+0

Если вы не используете это расширение и попробуйте его в строгом режиме в другом месте, дает ли он одинаковые результаты? Я не могу воспроизвести, но опять же я не использую то, что вы используете. –

+0

Вы делаете 'var g = новый Greeter (someStrategy);' и затем 'g.greet();'? Вам, вероятно, придется показать нам код, который использует код в вашем вопросе. – jfriend00

+0

Да, я использую var g = new Greeter (someStrategy); и затем g.greet(); – Siddartha

ответ

0

Проблема заключается в определении конструктора MessageHandling. Вам нужно удалить ключевое слово new, потому что здесь нет смысла.
Вместо этого кода:

var MessageHandling = new function(strategy) { 
    this.strategy = strategy; 
}; 

использовать это:

var MessageHandling = function(strategy) { 
    this.strategy = strategy; 
}; 

newoperator используется для создания экземпляров объектов из функции конструктора. Вам не нужно использовать его для определения конструктора.

+0

Он работает Отлично! – Siddartha

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