LINUX.ORG.RU

История изменений

Исправление uin, (текущая версия) :

Писать на нём пробовал? Заниматься работой компилятора дело неблагодарное.

Причем здесь работа компилятора?

var user_1 = new User('gpl-фанбой', 50)
var user_2 = new User('либераст-кун', 50)

function User(nik, i) {
   this.name  = nik;
   this.score = i;
   this.say_words = "";
}

User.prototype.say = function(w) {
   //все объекты типа User наследуют это свойство
   this.say_words = this.say_words +" "+ w;
}

function moderateUsers(users, callback) {
   User.prototype.lose = function(n) {
      //все объекты типа User внутри этой функции наследуют это свойство
      this.score = this.score - n;
   }
   for (var i = 0; i < users.length; i++) {
      if (!users[i])
         continue;
      callback(users[i]);
   }
}

user_1.say('свободка Столлман анальное рабство')
user_2.say('попил россиюшка честные выборы трактор')

moderateUsers([
   user_1, user_2
], function(user) {
   String.prototype.offense = function() {
      //все строки внутри этой функции наследуют это свойство
      var m7 = this.match(/анальное\sрабство/ig)
      var m20 = this.match(/попил|честные\sвыборы/ig)
      return (m7 ? m7.length * 7 : 0) + (m20 ? m20.length * 20 : 0);
   }
   user.lose(user.say_words.offense())
   console.log(user.name +": "+ user.score +" скора осталось.")
})

от того, что ты написал так, как написал выше, жуёс не стал строготипизированным.

unikoid

К сильной типизации этот код (как и весь JS) отношения не имеет никакого

Да - не имеет, да - не становится, контролируйте/проверяйте типы в ручную, пишите так что бы они не переопределялись, если прям кровь из носу строгая типизация нужна.
Все что я хотел сказать.

Исходная версия uin, :

Писать на нём пробовал? Заниматься работой компилятора дело неблагодарное.

Причем здесь работа компилятора?

var user_1 = new User('gpl-фанбой', 50)
var user_2 = new User('либераст-кун', 50)

function User(nik, i) {
   this.name  = nik;
   this.score = i;
   this.say_words = "";
}

User.prototype.say = function(w) {
   //все объекты типа User наследуют это свойство
   this.say_words = this.say_words +" "+ w;
}

function moderateUsers(users, callback) {
   User.prototype.lose = function(n) {
      //все объекты типа User внутри этой функции наследуют это свойство
      this.score = this.score - n;
   }
   for (var i = 0; i < users.length; i++) {
      if (!users[i])
         continue;
      callback(users[i]);
   }
}

user_1.say('свободка Столлман анальное рабство')
user_2.say('попил россиюшка честные выборы трактор')

moderateUsers([
   user_1, user_2
], function(user) {
   String.prototype.offense = function() {
      //все строки внутри этой функции наследуют это свойство
      var m7 = this.match(/анальное\sрабство/ig)
      var m20 = this.match(/попил|честные\sвыборы/ig)
      return (m7 ? m7.length * 7 : 0) + (m20 ? m20.length * 20 : 0);
   }
   user.lose(user.say_words.offense())
   console.log(user.name +": "+ user.score +" скора осталось.")
})

от того, что ты написал так, как написал выше, жуёс не стал строготипизированным.

unikoid

К сильной типизации этот код (как и весь JS) отношения не имеет никакого

Да - не имеет, да - не становится, контролируйте/проверяйте типы в ручную если так нужно.