Объект на основе функции
Создал объект на основе функции:
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, время: 11:35. |