Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.05.2014, 23:12
Аспирант
Отправить личное сообщение для Sergey_New Посмотреть профиль Найти все сообщения от Sergey_New
 
Регистрация: 21.07.2009
Сообщений: 71

Объект на основе функции
Создал объект на основе функции:
function person(){
this.sex="";
this.name="";
}
var persona=new person();
Если смотреть в отладчике (VS 2008), то указан тип - Object, (person).
Как узнать, на основе какой функции создан объект из свойств persona?
Ответить с цитированием
  #2 (permalink)  
Старый 21.05.2014, 23:40
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,138

<script>
function person(){
this.sex="";
this.name="";
};
var persona=new person();
alert(persona.constructor)
</script>

Пользуйся отладчиком в браузере таких вопросов не будет
Ответить с цитированием
  #3 (permalink)  
Старый 22.05.2014, 00:05
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

<script>
  function person() {
    this.sex = "";
    this.name = "";
  }
  var persona = new person();
  var reg = /^.*?\s(.*)\(/
  alert("Function name - " + reg.exec(persona.constructor.toString())[1]);
  alert("Function name - " + persona.constructor.name);
</script>


<script>
  function person() {
    this.sex = "";
    this.name = function () {
      return this.constructor.name;
    }
  }
  var persona = new person();;
  alert("Function name - " + persona.name());
</script>

Последний раз редактировалось Vlasenko Fedor, 22.05.2014 в 00:56.
Ответить с цитированием
  #4 (permalink)  
Старый 22.05.2014, 00:39
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Дополню ответ вышел, если constructor был перезаписан, так же можно посмотреть через не стандартное свойство __proto__ работает в хроме, лисе и опере.
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #5 (permalink)  
Старый 22.05.2014, 01:28
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

alert(({}).constructor.name);
alert(([]).constructor.name);
alert((/1/).constructor.name);

а вообще сам вопрос не корректен и еще дофига замечаний но писать лень
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #6 (permalink)  
Старый 22.05.2014, 01:57
foo foo вне форума
Профессор
Отправить личное сообщение для foo Посмотреть профиль Найти все сообщения от foo
 
Регистрация: 17.05.2014
Сообщений: 197

Вот так работает:
function Fu(){this.a=1}
ob=new Fu()
console.log(ob.constructor.name) // Fu

А вот так нет, между прочим.
Fu=function(){this.a=1}
ob=new Fu()
console.log(ob.constructor.name) //

Проверил в ноде и в хроме.
Ответить с цитированием
  #7 (permalink)  
Старый 22.05.2014, 02:17
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,589

foo, Ну так вторая - безымянная. Fu - в таком случае просто переменная.
__________________
29375, 35
Ответить с цитированием
  #8 (permalink)  
Старый 22.05.2014, 08:06
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от cyber Посмотреть сообщение
Дополню ответ вышел, если constructor был перезаписан, так же можно посмотреть через не стандартное свойство __proto__ работает в хроме, лисе и опере.
Свойство __proto__ добавлено в стандарт и работает уже везде.

PS: сейчас рекомендуется юзать Object.getPrototypeOf / Object.setPrototypeOf, где такое поддерживается.
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 22.05.2014 в 08:40.
Ответить с цитированием
  #9 (permalink)  
Старый 22.05.2014, 08:21
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Цитата:
А вот так нет, между прочим.
Fu=function(){this.a=1}
Fu = function Fu() { ... };
__________________
kobezzza
code monkey
Ответить с цитированием
  #10 (permalink)  
Старый 22.05.2014, 08:42
Аспирант
Отправить личное сообщение для Sergey_New Посмотреть профиль Найти все сообщения от Sergey_New
 
Регистрация: 21.07.2009
Сообщений: 71

Спасибо всем!
Poznakomlus, использовал Ваш регекс
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ссылка на объект в функции hotcooler17 Общие вопросы Javascript 4 10.04.2011 14:40
arguments вызвавшей функции mister_maxim Общие вопросы Javascript 4 12.10.2010 16:21
bind: как передать функции указатель на объект trial jQuery 4 25.05.2010 01:35
тест magistr_bender Оффтопик 44 25.10.2008 19:28
Получение ссылки на объект из метода Octane Общие вопросы Javascript 7 21.08.2008 15:09