Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   object.prototype (https://javascript.ru/forum/misc/4747-object-prototype.html)

JSprog 18.08.2009 07:33

object.prototype
 
Синтаксис object.prototype выводит массив всех свойств ?

B~Vladi 18.08.2009 11:57

Цитата:

Сообщение от JSprog
выводит массив всех свойств

Откуда такие выводы?!

prototype - это ссылка на прототип объекта.

Kolyaj 18.08.2009 12:20

Цитата:

Сообщение от B~Vladi
prototype - это ссылка на прототип объекта.

var A = function() {};
A.prototype = {test: function() {}};
var object = new A();
alert(object.prototype); // undefined

B~Vladi 18.08.2009 12:41

Дальше что?! Сам-то можешь здесь подробные комменты проставить?!

Видел я такие кривые трюки... Они только ломают модель языка и головы кодерам...

Kolyaj 18.08.2009 12:43

У произвольного объекта нет свойства prototype, оно есть у функций.

B~Vladi 18.08.2009 12:44

Цитата:

Сообщение от Kolyaj
У произвольного объекта нет свойства prototype

А как же неявная ссылка?!

JSprog 18.08.2009 12:45

Прототип это ссылка на все свойства объекта ( в данном синтаксисе) вот я и спрашиваю она выводит их в виде массива? (так написанно в статье про наследование)

JSprog 18.08.2009 12:45

Цитата:

Сообщение от B~Vladi
А как же неявная ссылка?!

это уже [[prototype]]

B~Vladi 18.08.2009 12:49

Цитата:

Сообщение от JSprog
это уже [[prototype]]

А что такое вообще "прототип"?!

Переменная var str = 'string'; - typeof == 'string', прототипом которой является встроенный объект String так ли?! По логике вещей...

Kolyaj 18.08.2009 12:50

Цитата:

Сообщение от B~Vladi
А как же неявная ссылка?!

Мы же о практике, а не о теории.

Цитата:

Сообщение от JSprog
вот я и спрашиваю она выводит их в виде массива?

Так и проверь, как она их выводит, и выводит ли вообще.

JSprog 18.08.2009 12:51

Цитата:

Сообщение от Kolyaj
Animal.prototype - содержит методы для всех объектов класса Animal.

Цитвтв из статьи
А у вас свойство а не метод

Kolyaj 18.08.2009 12:52

Цитата:

Сообщение от B~Vladi
прототипом которой является встроенный объект String так ли?

Нет не так, но в объяснения вдаваться не буду, их уже полно даже на этом сайте. Ну или Zeroglif объяснит, у него лучше получается. :)

Kolyaj 18.08.2009 12:53

Цитата:

Сообщение от JSprog
Animal.prototype - содержит методы для всех объектов класса Animal.

(Это не моя цитата кстати)
Animal -- это функция, а не объект "класса Animal".

B~Vladi 18.08.2009 12:54

Цитата:

Сообщение от Kolyaj
Нет не так

Ну как не так?! У переменной те же методы и свойства, что и у втроенного String, значит String для неё прототип (Прототип — м. греч. первообраз, начальный, основной образец, истинник.)...:-?

JSprog 18.08.2009 12:54

Цитата:

Сообщение от B~Vladi
прототипом которой является встроенный объект String

Нет но он может быть в обертке объекта String то есть временно (когда надо) а потом назад к элементарному типу данных

JSprog 18.08.2009 12:56

Цитата:

Сообщение от Kolyaj
Animal -- это функция, а не объект "класса Animal".

Ну хорошо а тогда function.prototype выдаёт в виде массива?

Kolyaj 18.08.2009 12:56

Цитата:

Сообщение от B~Vladi
У переменной те же методы и свойства, что и у втроенного String, значит String для неё прототип

При попытке использования примитивного типа как объекта происходит неявное преобразование типов.

Kolyaj 18.08.2009 12:57

Цитата:

Сообщение от JSprog
Ну хорошо а тогда function.prototype выдаёт в виде массива?

Объекта, который, в принципе, может быть и массивом.

JSprog 18.08.2009 12:57

То есть?
Выдаёт все методы ввиде объекта?

Kolyaj 18.08.2009 12:58

Цитата:

Сообщение от JSprog
Выдаёт все методы ввиде объекта?

При чем здесь методы? Там же не только функции могут быть.
Array.prototype[3] = 4;
alert([][3]);

B~Vladi 18.08.2009 13:00

Цитата:

Сообщение от JSprog
Нет но он может быть в обертке объекта String

Я сейчас не говорю про хитрые обёртки, а про логический момент. Не про свойство prototype, которое "есть только у функции" (с), хотя функция - это ведь объект типа Function... Значит только у объекта Function есть свойство prototype...

JSprog 18.08.2009 13:01

Уфффф...ты читать умеешь?
В статье написано что этот синтаксис должен вернуть все методы объекта!!!
В каком виде он их вернёт?

JSprog 18.08.2009 13:01

Цитата:

Сообщение от B~Vladi
Значит только у объекта Function есть свойство prototype...

А кто-то говорил другое?

B~Vladi 18.08.2009 13:05

Цитата:

Сообщение от JSprog
В статье написано что этот синтаксис должен вернуть все методы объекта!!!

Я не смотрю статью и мне пох что там кто возвращает через какие-то самопальные прототипы или чё там ещё есть.
Цитата:

Сообщение от JSprog
А кто-то говорил другое?

Я не правильно тебя понял... Ты про статью спрашивал, а я подумал про обычный прототип, который возвращает объект, но не как не массив методов. А по-поводу статьи обращайся к автору, как он так сделал, что в нём оказался массив.

JSprog 18.08.2009 13:07

Цитата:

Сообщение от B~Vladi
что в нём оказался массив.

В нём не оказался массив он просто возвращает все методы и мне надо узнать в виде масива или нет

B~Vladi 18.08.2009 13:10

Цитата:

Сообщение от JSprog
В нём не оказался массив

Я как пример, ты же сам предполагал такой вариант?!...

Kolyaj 18.08.2009 13:10

Цитата:

Сообщение от JSprog
мне надо узнать в виде масива или нет

Так проверь.

Kolyaj 18.08.2009 13:11

Цитата:

Сообщение от JSprog
В статье написано что этот синтаксис должен вернуть все методы объекта!!!

Не должен.

JSprog 18.08.2009 13:13

Нет должен и этот код тому доказательство
function extend(Child, Parent) {
    var F = function() { }
    F.prototype = Parent.prototype
    Child.prototype = new F()
    Child.prototype.constructor = Child
    Child.superclass = Parent.prototype    
}

Kolyaj 18.08.2009 13:14

JSprog,
я бы тебе привел доказательство обратного, но ты уперся в какую-то статью и не хочешь больше ничего слышать.

JSprog 18.08.2009 13:15

А я тебе привёл доказательство что должен работать, но ты упёрся и не хочешь больше ничего слышать

Kolyaj 18.08.2009 13:20

Ну я ничего и не спрашиваю, я и так это все знаю. Ты почему сам не можешь проверить, что возвращается?

B~Vladi 18.08.2009 13:22

JSprog, на самом деле, вникать в это совсем не обязательно. Кодить в среде браузера - это не игру писать на Java... Не нужно строить сложных объектных связей... На практике как правило хватает знаний "всё и вся - объекты". Я не знаю как работает эта хитрая функция и знать не хочу, а если бы хотел - понял. Вот когда будут настоящие объекты с классами - тогда стоит вникать...

JSprog 18.08.2009 13:28

<script>
var A = function() {};
A.prototype.test = alert("hello");
var objects = new A();
alert(objects.prototype);//hello
</script>

Понял ошибку

JSprog 18.08.2009 13:28

Цитата:

Сообщение от B~Vladi
и знать не хочу,

А я хочу
P.S.Сорри за дабл пост
Ушёл читать я докапаюсь до ответа...


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