Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.05.2015, 15:41
Интересующийся
Отправить личное сообщение для DennisMatveyev Посмотреть профиль Найти все сообщения от DennisMatveyev
 
Регистрация: 28.05.2015
Сообщений: 18

вопрос по созданию функции
добрый день, всем!.. подскажите, пжлст, как решить задачу:
Есть объект Person (name, age, method), и есть объект Student, который наследует Person и имеет свой method2.

1.Нужно реализовать функцию type(), которая принимает объект Student или Person и возвращает его тип, НЕ используя оператор instanceof, а используя проверку наличия свойств/методов объектов.

2.Модифицировать функцию так, что она не принимает объект, а оперирует с объектом this.
Функция объявляется вне контекста, но вызывается на определенном объекте при помощи call/apply/bind.

Спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 28.05.2015, 15:54
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

DennisMatveyev,
Не вижу ваших попыток решения проблемы.
Как спросить, чтобы вам ответили
Ответить с цитированием
  #3 (permalink)  
Старый 28.05.2015, 17:04
Профессор
Отправить личное сообщение для Decode Посмотреть профиль Найти все сообщения от Decode
 
Регистрация: 31.01.2015
Сообщений: 576

function Person(name, age) {
	this.name = name;
	this.age = age;
}

Person.prototype.method = function() {
	alert(this.name + this.age);
};

function Student(name, age) {
	Person.apply(this, arguments);
}

Student.prototype = Object.create(Person.prototype);
Student.prototype.constructor = Student;
Student.prototype.method2 = function() {
	alert("Bla-bla-bla");
};

var vasya = new Person('Василий', 25);
var petya = new Student('Петя', 18);

function type() {
	(this.method2 !== undefined) ? alert('Student') : alert('Person');
}

type.call(vasya);
type.call(petya);
Ответить с цитированием
  #4 (permalink)  
Старый 28.05.2015, 20:45
Аспирант
Отправить личное сообщение для indeterm Посмотреть профиль Найти все сообщения от indeterm
 
Регистрация: 26.05.2015
Сообщений: 43

getType=function(object){return object? object.type : this.type}

Person={
 type: "Person",
 extend: function(o){
  for(var i in o) {if(!o.hasOwnProperty(i)) return this; this[i]=o[i]} return this
 },
 clone: function(){
  return Object.create(this)
},
 getType: getType,
 getData: function(){return this.name+" "+this.age}
}

Student=Person.clone().extend({
 type: "Student",
 getFuckingData: function(){return "I am "+this.name+" and I'm motherfucker"}
})

john=Student.clone().extend({name: "John", age: 19})

with(console){
 log(getType(john))
 log(getType.call(john))
 log(getType.apply(john))
 log(getType.bind(john)())
 log(john.getType())
 log(john.getData(), john.getFuckingData())
}

// ::: Student
// ::: Student
// ::: Student
// ::: Student
// ::: Student
// ::: John 19 I am John and I'm motherfucker

Последний раз редактировалось indeterm, 28.05.2015 в 20:51.
Ответить с цитированием
  #5 (permalink)  
Старый 29.05.2015, 11:25
Интересующийся
Отправить личное сообщение для DennisMatveyev Посмотреть профиль Найти все сообщения от DennisMatveyev
 
Регистрация: 28.05.2015
Сообщений: 18

класс.... спасибо большое!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вопрос по созданию объектов Wizout Общие вопросы Javascript 32 08.01.2012 01:32
Скобки после имени функции. В чем разница, если они есть и если их нет? jsuse Общие вопросы Javascript 2 19.11.2011 16:11
Вопрос по определению функции capscom Общие вопросы Javascript 12 25.09.2011 15:54
Переменная как значение функции. Jurasmi Общие вопросы Javascript 7 22.04.2010 12:45
вопрос по функции replace() bushstas Общие вопросы Javascript 3 20.02.2010 16:57