Поскольку я не допущу план фабрики YUI/Crockford и потому что мне нравится сохранять вещи сам содержавшими и расширяемыми, это - мое изменение:
function Person(params)
{
this.name = params.name || defaultnamevalue;
this.role = params.role || defaultrolevalue;
if(typeof(this.speak)=='undefined') //guarantees one time prototyping
{
Person.prototype.speak = function() {/* do whatever */};
}
}
var Robert = new Person({name:'Bob'});
то, где идеально тест typeof находится на чем-то как первый метод, моделировало
Это известно как проблема завершения при сцеплении методов Попробуйте это
TicketRules
.RequireValidation()
.When(quartType => quartType == QuartType.Before,
rule => rule.TotalMilageIs(64))
.When(quartType => quartType == QuartType.After,
rule => rule.TotalMilageIs(128));
Поначалу это выглядит немного странно, но оно переносит ваши условные выражения в другую область видимости, чтобы вы могли их выполнять условно. Думайте об этом как о создании собственного блока if. Закрыв его, вы узнаете, когда можно «закончить» подвыражение.