Объект на основе функции
Создал объект на основе функции:
function person(){ this.sex=""; this.name=""; } var persona=new person();Если смотреть в отладчике (VS 2008), то указан тип - Object, (person). Как узнать, на основе какой функции создан объект из свойств persona? |
<script> function person(){ this.sex=""; this.name=""; }; var persona=new person(); alert(persona.constructor) </script> Пользуйся отладчиком в браузере таких вопросов не будет |
<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> |
Дополню ответ вышел, если constructor был перезаписан, так же можно посмотреть через не стандартное свойство __proto__ работает в хроме, лисе и опере.
|
alert(({}).constructor.name); alert(([]).constructor.name); alert((/1/).constructor.name); а вообще сам вопрос не корректен и еще дофига замечаний но писать лень :) |
Вот так работает:
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) // Проверил в ноде и в хроме. |
foo, Ну так вторая - безымянная. Fu - в таком случае просто переменная.
|
Цитата:
PS: сейчас рекомендуется юзать Object.getPrototypeOf / Object.setPrototypeOf, где такое поддерживается. |
Цитата:
Fu = function Fu() { ... }; |
Спасибо всем!
Poznakomlus, использовал Ваш регекс |
Часовой пояс GMT +3, время: 02:28. |