Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вызов стандартного конструктора без "new" (https://javascript.ru/forum/misc/17672-vyzov-standartnogo-konstruktora-bez-new.html)

monolithed 29.05.2011 10:47

var obj = new Number(1);
var pr1 = Number(obj); // неявный вызов valueOf
var pr2 = obj.valueOf(); // явный
 
alert([
  typeof obj, // "object"
  typeof pr1, // "number"
  typeof pr2  // "number"
]);


Riim, есть сомнения в существовании valueOf у объекта? :D
var foo = {
  a: true,
  b: true,
  valueOf: function () {
      return this.b + this.a;
  }
};

alert(+foo);

Sweet 29.05.2011 12:40

Number не только вызывает valueOf, но приводит результат к числу:
var test = {
  valueOf: function(){
    return "9.1";
  }
};

alert( Number(test) );
var test = {
  valueOf: function(){
    return "NotANumber";
  }
};

alert( Number(test) );

Riim 29.05.2011 13:21

monolithed, ну вроде что-то становится понятно, спасибо.


Часовой пояс GMT +3, время: 23:56.