Помощь по анонимным функциям
есть код
function Shape () { this.constructor.name = Shape; } Shape.prototype = { getPerimeter: function () { if ( this.constructor == Shape ) throw Error( "Forbidden" ); var p = 0; for ( var i = 0; i < this.sides.length; i++) { p += this.sides[i]; } return p; }, getSquare: function () { if ( this.constructor == Shape ) throw Error( "Forbidden" ); }, getType: function () { if ( this.constructor == Shape ) throw Error( "Forbidden" ); return name; } } Shape.prototype.constructor = Shape; //иначе Object() !!!! var Triangle; (function () { Triangle = function ( a, b, c ) { this.sides = [ a, b, c ]; } Triangle.prototype = new Shape(); Triangle.prototype.constructor = Triangle; Triangle.prototype.getSquare = function () { var p = this.getPerimeter()/2; var S = Math.sqrt( p * ( p - this.sides[0] ) * ( p - this.sides[1] ) * ( p - this.sides[2] ) ); return Math.floor( S ); } })(); var t = new Triangle ( 10, 15, 20 ); как мне получить тип обекта t и вывести его куданить ( скажем в алерт тот, не суть ) |
Что значит вывести? Вы хотите отрисовать треугольник на странице или как?
|
t.constructor
|
мммм нуна метод getType переписать так, чтоб он возвращал тип объекта, к примеру
t.getType(); должно вернуть Triangle |
Цитата:
|
getType: function () { if ( this.constructor == Shape ) throw Error( "Forbidden" ); return this.constructor.name; }Только для ie придется "в ручную" дописывать:) |
в ручную это как, да и ваш код не работает, вы проверяли его?
|
чем вам конструктор, еще раз, не понравился?
function Triangle(){ this.getType = function(){ return this.constructor.name }; this.getType2 = function(){ return this.constructor }; } var t = new Triangle ( 10, 15, 20 ); alert( t.getType() ); alert( t.getType2() === Triangle ); |
фух, еще раз говорю, функция конструктора АНОНИМНА, как мне получить имя констурктора именно при моей реализации конструктора треугольника!
|
Цитата:
Цитата:
var constructorName = ""; |
без явного задания его имени...
|
1. Ну так если у конструктора не задано имя, то что Вы собрались получать?
2. Не вижу в Вашем листинге кода ни одного анонимного конструктора. |
конструктор объекта t не анонимный?
|
Почему бы тогда не ввести ключ .type в прототипы всех конструкторов?
|
хочу через метод..., все остальные обходные способы пробовал, но хочу вот так получить
|
var myObject = { myMethod: function() { return 'hello world!'; }, // методы, значения и т.п. // ............ toString: function() { return '[object myObject]'; } } alert( myObject.myMethod() ); alert( myObject ); |
мне тоже неясно
Цитата:
|
:-? я наверно не в тему свой листинг привел в пример, не сразу просто впер что он хочет... А оказывается имя конструктора. thethirdchild, хочешь имя вот "constructor" ;)
|
devote, найди то - не знаю, что. на это похоже :)
|
Цитата:
|
Часовой пояс GMT +3, время: 04:23. |