Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помощь по анонимным функциям (https://javascript.ru/forum/misc/20930-pomoshh-po-anonimnym-funkciyam.html)

thethirdchild 23.08.2011 10:58

Помощь по анонимным функциям
 
есть код
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 и вывести его куданить ( скажем в алерт тот, не суть )

SkyLight 23.08.2011 11:43

Что значит вывести? Вы хотите отрисовать треугольник на странице или как?

B@rmaley.e><e 23.08.2011 12:08

t.constructor

thethirdchild 24.08.2011 01:13

мммм нуна метод getType переписать так, чтоб он возвращал тип объекта, к примеру
t.getType(); должно вернуть Triangle

thethirdchild 24.08.2011 01:15

Цитата:

Сообщение от B@rmaley.e><e (Сообщение 121857)
t.constructor

выводит всю функцию конструктора, не то что надо, да и она безымянная...

Sweet 24.08.2011 01:35

getType: function () {  
  if ( this.constructor == Shape ) throw Error( "Forbidden" ); 
  return this.constructor.name; 
}
Только для ie придется "в ручную" дописывать:)

thethirdchild 24.08.2011 09:10

в ручную это как, да и ваш код не работает, вы проверяли его?

melky 24.08.2011 11:18

чем вам конструктор, еще раз, не понравился?
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 );

thethirdchild 24.08.2011 23:22

фух, еще раз говорю, функция конструктора АНОНИМНА, как мне получить имя констурктора именно при моей реализации конструктора треугольника!

B@rmaley.e><e 24.08.2011 23:35

Цитата:

Сообщение от thethirdchild
функция конструктора АНОНИМНА

Цитата:

Сообщение от thethirdchild
как мне получить имя констурктора

var constructorName = "";


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