Помощь по анонимным функциям
есть код
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, время: 16:15. |