Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

Search found 0 matches
Author Message
  Topic: О прототипах...
Zeroglif

Replies: 23
Views: 28651

PostForum: Разное :: JavaScript   Posted: Mon Nov 02, 2009 12:16 am   Subject: О прототипах...
покажите мне Function object, который не реализует внутренний метод

Можно в разных браузерах попробовать конструировать с помощью встроенных функций. Сразу станет понятно, что такие функции есть.

Или же покажите объект, который этот метод реализует, но при этом не является Function object-ом.

А какой вывод из этого можно сделать? Не понимаю, с чем из мною сказанного несогласие. Про бетонные стены не понимаю, про бронестёкла, попроще бы а, поприземлённей. Ок? И пойдёт разговор. ;-)
  Topic: О прототипах...
Zeroglif

Replies: 23
Views: 28651

PostForum: Разное :: JavaScript   Posted: Sun Nov 01, 2009 3:05 pm   Subject: О прототипах...
Сорри, разлогинился.
  Topic: О прототипах...
Zeroglif

Replies: 23
Views: 28651

PostForum: Разное :: JavaScript   Posted: Sat Oct 31, 2009 11:02 am   Subject: О прототипах...
Если есть класс - то где он?
Его нет, поэтому и нигде. Есть 3 объекта, которые для удобства восприятия (и в рамках логики ES) можно назвать объектом-конструктором, объектом-прототипом, объектом-экземпляром. Классовая терминология (включая и 'new') не должны сбивать с толку.


Тогда: конструктор в Javascript - это функция специальной структуры, вызов которой с использованием ключевого слова new приводит к порождению экземпляра. Полагаю, ни у кого нет возражений против такого определения?

В стандарте дано несколько простых и понятных определений:

- A constructor is a Function object that creates and initialises objects.
- Constructors are functions intended for use with the new operator.
- Objects that implement this internal method (имеется в виду метод [[Construct]]) are called constructors.

Наиболее точно для меня звучит последнее определение, в первом случае конструктору не обязательно инициализировать объект свойствами, во втором случае обязательность оператора "new" ...
  Topic: элемент строки
Zeroglif

Replies: 18
Views: 14041

PostForum: Разное :: JavaScript   Posted: Tue Mar 31, 2009 6:02 pm   Subject: элемент строки
Ex_Soft

Вот вы дали ссылку, там в самом низу есть первоисточник. ;)
  Topic: элемент строки
Zeroglif

Replies: 18
Views: 14041

PostForum: Разное :: JavaScript   Posted: Tue Mar 31, 2009 2:10 pm   Subject: элемент строки
1.4.3 The typeof Operator

The production UnaryExpression : typeof UnaryExpression is evaluated as follows:

1. Evaluate UnaryExpression. (вычисляется выражение, на значение пока плевать)

2. If Type(Result(1)) is not Reference, go to step 4. (если не свойство (литерал), то получить значение)

3. If GetBase(Result(1)) is null, return "undefined". (если свойство вообще не найдено, то НЕ ПОЛУЧАТЬ значение)

4. Call GetValue(Result(1)). (получить значение)

5. Return a string determined by Type(Result(4)) according to the following table:
  Topic: элемент строки
Zeroglif

Replies: 18
Views: 14041

PostForum: Разное :: JavaScript   Posted: Tue Mar 31, 2009 1:23 pm   Subject: элемент строки
в начале все вычисляется, а потом уж передается на вход

Как вы тогда себе объясните то, что несуществующий идентификатор, допустим, typeof(XXX) вычисляется без ошибок, а alert(XXX) с ошибкой?
  Topic: элемент строки
Zeroglif

Replies: 18
Views: 14041

PostForum: Разное :: JavaScript   Posted: Tue Mar 31, 2009 12:21 pm   Subject: элемент строки
Если нормальная яваскриптовая ветка ни за что отправлена в мусоропровод, то зачем тогда и сообщения удалять? Было несколько комментариев по работе 'typeof', связанные с темой.
  Topic: элемент строки
Zeroglif

Replies: 18
Views: 14041

PostForum: Разное :: JavaScript   Posted: Mon Mar 30, 2009 9:19 pm   Subject: элемент строки
В предыдущем сообщении забыл ответить на сам вопрос. Поведение IE правильнее. ;)
  Topic: onChange в FireFox
Zeroglif

Replies: 7
Views: 7554

PostForum: Разное :: JavaScript   Posted: Fri Feb 27, 2009 10:02 am   Subject: onChange в FireFox
Вы обращаетесь к элементу по ID с помощью метода getElementById, но при этом никакого ID у элемента нет. IE смешивает NAME с ID, на него равняться не надо. ;)
  Topic: Debug_Console [обсуждение]
Zeroglif

Replies: 63
Views: 82641

PostForum: Разное :: JavaScript   Posted: Thu Feb 26, 2009 2:54 pm   Subject: Debug_Console [обсуждение]
или вы считаете лучше написать по старому?
Тут большой разницы нет, в случае с if(typeof объект.метод != 'undefined') вы пропускаете все значения, кроме несуществующих или 'undefined', в случае с if(объект.метод) вы пропускаете все значения, кроме конвертируемых в false (null, undefined, 0 и так далее). По сути и там, и там проверяется только существование свойства.
  Topic: onMouseDown - вызывающий объект
Zeroglif

Replies: 21
Views: 17510

PostForum: Разное :: JavaScript   Posted: Thu Feb 26, 2009 11:20 am   Subject: onMouseDown - вызывающий объект
Т.е. document.getElementById('tr1').cl_name = this; сработает как присвоение класса с текущими параметрами или ссылка на этот, конкретно созданный, класс?
В js нет классов!

У некой ноды создано новое свойство 'cl_name', значением этого свойства является значение 'this' при вызове метода 'temp.t3()'. Значением 'this' является объект, созданный ранее как 'new ttt()'. Таким образом, мы можем обращаться к одному и тому же объекту 'через document.getElementById('tr1').cl_name' или через 'temp'. Алерт выведет '3', т.к. именно это значение у свойства 't1' в момент вызова алерта.
  Topic: Debug_Console [обсуждение]
Zeroglif

Replies: 63
Views: 82641

PostForum: Разное :: JavaScript   Posted: Wed Feb 25, 2009 11:58 am   Subject: Debug_Console [обсуждение]
Не совсем понял, вы имеете ввиду вынос этого всего в отдельный CSS файл?
Не важно в файл или в html прописать, я имел в виду, что динамика (кроме display) не нужна, можно прописать css заранее.
  Topic: Debug_Console [обсуждение]
Zeroglif

Replies: 63
Views: 82641

PostForum: Разное :: JavaScript   Posted: Tue Feb 24, 2009 11:41 am   Subject: Debug_Console [обсуждение]

function(event_type, event_interpriter, object){
//...
var object = object;
Нет смысла объявлять переменную с тем же именем, что и у параметра. Нет смысла присваивать свойству значение, которое у него есть и так. ;)

if (event_type == 'load'){
var object = object;
} else {
var object = object.document.documentElement;
}
Оставлю за кадром логику, скажу только, что переменные конкретизируются/создаются заранее, при-var-ивать дважды/трижды/четырежды одно и то же имя не имеет никакого смысла, блок if-else на это не влияет.

with (console_block.style)
Зачем 'with' и динамическое изменение свойств, если можно заранее прописать css?


var enabled = true;
//...
if (enabled === false)
Для значений одного типа нет необходимости применять строгое сравнение тем более, что блок 'if()' конвертирует значение в скобках, отсюда сравнение вообще излишне.
  Topic: Глобальные переменные и контексты в JavaScript.
Zeroglif

Replies: 58
Views: 164883

PostForum: Разное :: JavaScript   Posted: Sat Nov 08, 2008 5:51 pm   Subject: Глобальные переменные и контексты в JavaScript.
На самом деле объявлять переменные без var соответствует спецификации, хотя явно это не указывается в спецификации.
Соответствует, но не указывается явно? В Netscape-овских спеках с самого начала говорилось: "to declare a global variable, declare the variable by assignment, that is simply assign the desired value...". С выходом же стандарта (ECMAScript) стало очевидно, что переменная объявляется только с помощью блатного словечка 'var', никаких тебе вариантов, никакого "declaration by assignment". Но спеки уже не поменялись, та же самая некорректно выраженная идея про "объявление через присваивание" продвигалась из версии в версию (и в JScript, и в JavaScript) в разной трактовке. Думаю, это делалось специально, чтобы не усложнять, не объяснять алгоритмы ES, писал об этом выше. В любом случае, это не объявление переменной в смысле ES, а создание нового свойства глобального объекта. Если знать, что все переменные (variables) - это свойства (properties), но не все свойства - это переменн ...
  Topic: Array.range - создание массива, содержащего интервал числовых элементов (обсуждение)
Zeroglif

Replies: 36
Views: 27187

PostForum: Разное :: JavaScript   Posted: Tue Sep 30, 2008 8:27 pm   Subject: Array.range - создание массива, содержащего интервал числовых элементов (обсуждение)
Я всё о том же - не помешало бы конвертировать this в примитив, честнее выйдет. ;)
  Topic: Наследование в JavaScript
Zeroglif

Replies: 22
Views: 14818

PostForum: Разное :: JavaScript   Posted: Tue Sep 30, 2008 8:21 pm   Subject: Наследование в JavaScript
я просто объяснил почему не работает мой пример
Пример-то работает, чего в нём написано, то и происходит, только он к коду из наблы имеет весьма отдалённое отношения, т.к. вообще из другой оперы, не про наследование/конструкторы/прототипы... ;)
А это по вашему что?
Это по нашему присваивание, а не "обращение к конструктору". Assignment - это вам не retrieval. К тому же наследуемые свойства защищены в части присваивания, к ним нужно обращаться прямо.
Изменить его можно так
Сдаётся мне, что вы меняете ссылку на прототип, а говорите почему-то о конструкторе...
  Topic: Наследование в JavaScript
Zeroglif

Replies: 22
Views: 14818

PostForum: Разное :: JavaScript   Posted: Tue Sep 30, 2008 4:12 pm   Subject: Наследование в JavaScript
и тут я решил по эксперемментировать
Пример у вас своеобразный, несмотря на наличие слов "constructor" и "prototype", их можно смело заменить на "foo" и "bar", код из наблы о другом совершенно.

а я пытаюсь обратится в конструкторе Object к его конструктору!
Обращения к конструктору там нет вообще (там изображено "свойство=значение", никаких обращений).

А Object это корневой объект
В каком смысле корневой? Object - это функция/конструктор, корневым (условно) можно называть Object.prototype, это ещё более-менее, только это никак не соотносится с вашим примером.

нету у него конструктора!
Есть. Только к нему никто не обращался. ;)
  Topic: Статья "Начала JavaScript"
Zeroglif

Replies: 17
Views: 10797

PostForum: Разное :: JavaScript   Posted: Mon Jun 16, 2008 1:20 pm   Subject: Статья "Начала JavaScript"
А пример - некорректен.
Почему?
В любом случае, простых слов для объяснения различий в поведении объектов и примитивов при передаче в функцию - нет.
Есть простые слова - "различий в поведении объектов и примитивов при передаче в функцию нет, т.к. их просто нет" ;-)
  Topic: Статья "Начала JavaScript"
Zeroglif

Replies: 17
Views: 10797

PostForum: Разное :: JavaScript   Posted: Mon Jun 16, 2008 12:37 pm   Subject: Статья "Начала JavaScript"
WingedFox

Вот b.ex = 1 - это нечто, что ещё можно назвать "по ссылке", но не передача же аргумента, что примитив, что объект передаются одинаково. У переменной 'c' нет жёсткой связи с 'b', у каждой своё собственное значение - reference/pointer/адрес/..., указывающее на один и тот же объект. Один объект, но разные значения переменных, разные в смысле... отдельные. Экма при передаче не обязывает смотреть на предыдущее значение, не обязывает устанавливать связь между свойствами, не обязывает делить некую одну ссылку, значение конкретного свойства тупо обновляется и ффсё. Для контраста можно привести пример настоящей жёсткой связи в javascript (не передача, но наглядно), ничего подобного между аргументом и параметром нет:


(function (x) {
var y = arguments[0];
y = null;
alert(x); //-> нет связи между свойствами
arguments[0] = null;
alert(x); //-> есть связь между свойствами
})({}& ...
  Topic: Статья "Начала JavaScript"
Zeroglif

Replies: 17
Views: 10797

PostForum: Разное :: JavaScript   Posted: Mon Jun 16, 2008 7:40 am   Subject: Статья "Начала JavaScript"
посмотрим на комменты

значений. Значение туда, значение сюда... ;)

В IE 3.0 небыло JScript'a и уж тем более JavaScript'a. А Netscape Navigator 3.0 вышел раньше и поддерживал JavaScript 1.1, чем Internet Explorer 4.0 в которой и появился JScript. Следовательно спустя 1,5 года после выхода JavaScript 1.0 и проиграв на целый месяц JavaScript 1.1, появился JScript...

Всё зависит от чего чего считать. ;) Официальная презентация языка JavaScript - 4.12.95, а языка JScript - 18.07.1996, уже тут разница никак не 1,5 года. Ну, или можно считать от беток - LiveScript появляется где-то в сентябре-октябре 95-ого (в бетке NN 2.0b1), Microsoft, начиная уже с зимы 96-ого, рож(д)ает свою собственную "pluggable scripting architecture", называемую тогда и OLE Scripting, и Scripting Host, и наконец ActiveX Script, которая появляется более-менее официально 29.05.96 в бетке IE3.0beta. Так что тут тоже никак не 1,5 года, а гораздо меньше. Кстати, в этой самой бетке IE был как раз-таки JavaScript(tm ...
  Topic: Частные способы клонирования
Zeroglif

Replies: 49
Views: 49661

PostForum: Разное :: JavaScript   Posted: Wed Mar 19, 2008 1:34 pm   Subject: Частные способы клонирования
Пример с глобальными, когда ожидается одно, а получаем в результат другое я приведу позже, когда будет время написать
Пример был бы кстати. Очень кстати. ;)
  Topic: Как в js проверить "пустоту" (отсутсвие свойств) объекта?
Zeroglif

Replies: 10
Views: 20822

PostForum: Разное :: JavaScript   Posted: Fri Mar 14, 2008 3:30 pm   Subject: Как в js проверить "пустоту" (отсутсвие свойств) объекта?

var o = {p1: undefined};
Object.prototype.p2 = undefined;

alert('p1' in o); //-> true (своё свойство)
alert('p2' in o); //-> true (наследуемое свойство)
alert('p3' in o); //-> false (несуществующее свойство)
  Topic: Таблица сравнений примитивных значений
Zeroglif

Replies: 14
Views: 17061

PostForum: Разное :: JavaScript   Posted: Tue Mar 11, 2008 11:00 pm   Subject: Таблица сравнений примитивных значений
А теперь как для начинающих: превращается.
А теперь как бы вопрос от начинающего: "Если превращается, то почему (true == {}) выдаёт false?". Верните детям "сексуальные подробности"! ;)
  Topic: Таблица сравнений примитивных значений
Zeroglif

Replies: 14
Views: 17061

PostForum: Разное :: JavaScript   Posted: Tue Mar 11, 2008 10:27 pm   Subject: Таблица сравнений примитивных значений
Другое дело, что {} === {} и var a = {}; a === {} - вещи разные
Одинаковые. И там и там - false при сравнении и один алгоритм.

объект превращается, по большому счету, в true
Не превращается.

все как один ковертируются в true
При нестрогом сравнении со значением типа String или со значением типа Number объекты конвертируется не в true, а в примитивное значение, возвращаемое внутренним методом toPrimitive.
  Topic: Prototype-based наследования vs. эмуляции Class-based наследования
Zeroglif

Replies: 70
Views: 52467

PostForum: Разное :: JavaScript   Posted: Sun Mar 09, 2008 2:11 am   Subject: Prototype-based наследования vs. эмуляции Class-based наследования
На кой ляд нужны разработчики симанки/спайдерманки/проч.манки в подтверждение ерунды, если есть стандарт языка, где всё чёрным по-белому:

"ECMAScript does not contain proper classes such as those in C++, Smalltalk, or Java" (-- ES 4.2.1 --)

"ECMAScript supports prototype-based inheritance" (-- ES 4.2.1 --)


Усилить разработчиками всё равно хочется? Усилим. Разработчик всего и вся:

"JS is prototype-based, not class-based" (-- Brendan Eich --)

"class is not equivalent to prototype/closure-based OOP in JS today" (-- Brendan Eich --)

"there is no way today to make an instance that is sealed against mutation by addition of new properties" (-- Brendan Eich --)

"it simply is not true that class in ES4 () can be simulated in ES3/JS1"[/i] (-- Brendan Eich --)
  Topic: Частные способы клонирования
Zeroglif

Replies: 49
Views: 49661

PostForum: Разное :: JavaScript   Posted: Sat Mar 08, 2008 9:19 pm   Subject: Частные способы клонирования
Нужно было сказать что-то вроде "вы тут добавляете свойство к глобальному variable object, а это нехорошо потому-то и потому-то".
Любой, кто предлагал здесь функцию clone, условно говоря, добавлял новое свойство к variable object, включая и зачинщика KES-а с его функцией cloneObject, которая тоже ака объявлена в неком контексте и тоже вызывается по имени из себя же, ничем в этом смысле не отличаясь от других.

в результате парсинга/интерпретации двух синтаксических конструктов "var id1" и "function id2() {...}" в такой-то variable object добавляются свойства с указанными именами.
Кто-то запостил неточную фразу, другой сразу же переспрашивает "при чём здесь это, когда оно - то" и понеслось выяснение смыслов. Многое выглядит похожим, но та же именованная функция бывает разной, вспомним хотя бы бешеные выкрутасы/баги в браузерах с FunctionExpressions. Точнее написал - быстрее поняли. ;)

Различие между всякими наличествующими методами только в количестве сахара/кривости формы.
Так ...
  Topic: yaji - ещё один вариант наследования
Zeroglif

Replies: 88
Views: 103485

PostForum: Разное :: JavaScript   Posted: Wed Feb 20, 2008 3:57 pm   Subject: yaji - ещё один вариант наследования
Копируются только свойства

var class1 = extend(0, {p1: 'p1', f1: function(){}});
class1.prototype = {inh_p1: 'inh_p1', inh_f1: function(){}};

var class2 = extend(class1, {p2: 'p2', f2: function(){}});

var c1 = new class1;
var c2 = new class2;


Вопрос - есть три свойства (f1, inh_f1, f2), какие из них будут унаследованы экземпляром с2, а какие станут собственными свойствами экземпляра с2?
  Topic: yaji - ещё один вариант наследования
Zeroglif

Replies: 88
Views: 103485

PostForum: Разное :: JavaScript   Posted: Wed Feb 20, 2008 3:38 pm   Subject: yaji - ещё один вариант наследования
Можно подробнее?
Насколько я вижу, вот в этот момент:

for (var i in qpe) {

вы обходите все свойства (свои, наследуемые) прототипа (q.prototype) и копируете их в ext. Далее при создании экземпляра все эти свойства становятся "собственными" свойствами экземпляра. Таким образом, свойства прототипа перекрыты, наследование уплыло...
  Topic: yaji - ещё один вариант наследования
Zeroglif

Replies: 88
Views: 103485

PostForum: Разное :: JavaScript   Posted: Wed Feb 20, 2008 3:12 pm   Subject: yaji - ещё один вариант наследования
Это было делать просто лениво 8*)
OK OK

сломает все существующие и новые тюненые запорожцы
Ради отдельного случая перекрывать наследуемые свойства разом? Нестандартный подход.

Роль прототипа - хранение методов родителя.
Методы вы тоже копируете в экземпляр.
  Topic: yaji - ещё один вариант наследования
Zeroglif

Replies: 88
Views: 103485

PostForum: Разное :: JavaScript   Posted: Wed Feb 20, 2008 2:48 pm   Subject: yaji - ещё один вариант наследования
Надо было как-то определить приватные parent, self, clazz.
Надо было мне поточнее спросить - с функциями-то понятно, но почему все свойства сразу не вырисовываются в теле. Вы говорите, что нужен объект, "из которого берутся недостающие потомку свойства". Недостающие в каком смысле? Пример бы.

Копирование потомку свойств происходит для того, чтобы они не конфликтовали между собой когда будут обращаться к сложным свойствам родителя
Роль прототипа тогда никакая, только чтобы с него свойства слить и оставить в виде объекта, "из которого берутся недостающие потомку свойства". ;)
  Topic: yaji - ещё один вариант наследования
Zeroglif

Replies: 88
Views: 103485

PostForum: Разное :: JavaScript   Posted: Wed Feb 20, 2008 1:12 pm   Subject: yaji - ещё один вариант наследования
и посмотрите что получится
Родной прототип переопределён, поэтому свойство constructor как бы "чужое", можно было бы восстановить своё: q.prototype.constructor = q;

Пара вопросов: А зачем в тело функции q попадают удалённые позже методы (собственные), а остальные свойства висят на объекте q.ext? В чём идея? И почему объект q.ext "подсасывает" в себя ещё и свойства прототипа? Результирующая картина выходит немного странная - имеем "функцию-конструктор", которая не cформирована сразу, а держит ссылку на объект, опрашиваемый при каждом создании экземпляра. Одновременно с этим, при создании экземпляра наследуемые от ближнего прототипа свойства перекрываются собственными одноимёнными свойствами. Для чего?
  Topic: Частные способы клонирования
Zeroglif

Replies: 49
Views: 49661

PostForum: Разное :: JavaScript   Posted: Tue Feb 19, 2008 3:41 pm   Subject: Частные способы клонирования
пример показывает именно некорректность клонирования объекта
Ааа, так это вроде и не обсуждалось вовсе, AKS на этом и не настаивал изначально. Мне кажется, речь в конце шла о том, есть ли у этой функции принципиальные отличия от той, что запостил Andrey Mindubaev и чем вредят миру глобальные переменные от KES-a. ;)
  Topic: Частные способы клонирования
Zeroglif

Replies: 49
Views: 49661

PostForum: Разное :: JavaScript   Posted: Tue Feb 19, 2008 3:05 pm   Subject: Частные способы клонирования

Потому что клонирование предполагает сохранение состояния клонируемого объекта на момент вызова. В данном случае - это не так.


Какого вызова? На момент вызова clone() всё пучком в отношении состояний объектов, а то, что потом вызывается alert(), так он к clone() никаким боком не пришёлся. Мы своими руками поменяли значение свойства прототипа (было 1, стало 3), затем посмотрели на это новое значение. Обычное дело. Не понимаю, что это доказывает.

мне нужно понять, к чему было вот это

Ну, так KES освободится и расскажет. Пообещал.
  Topic: Частные способы клонирования
Zeroglif

Replies: 49
Views: 49661

PostForum: Разное :: JavaScript   Posted: Tue Feb 19, 2008 2:47 pm   Subject: Частные способы клонирования
setTimeout(function(){alert(d.b)},10); // should be 1

Почему "should be 1"? Таймаут отсрочил выполнение функции с алертом внутри, который покажет значение d.b на момент истечения отсрочки, когда d.b уже равен 3. Или я выпал из сути обсуждения, или какой-то тёмный лес начался на светлой полянке...
  Topic: Частные способы клонирования
Zeroglif

Replies: 49
Views: 49661

PostForum: Разное :: JavaScript   Posted: Sat Feb 16, 2008 1:44 pm   Subject: Частные способы клонирования
clone

Чистоты ради это всё-таки имя функции, а не имя переменной. Это если рассматривать в смысле точных языковых конструкций. А насколько удобнее/оптимальнее не создавать dummy-функцию и обращаться к идентификатору в вышестоящем контексе - это уже другой вопрос, кому как.
  Topic: Prototype-based наследования vs. эмуляции Class-based наследования
Zeroglif

Replies: 70
Views: 52467

PostForum: Разное :: JavaScript   Posted: Thu Feb 14, 2008 3:27 pm   Subject: Prototype-based наследования vs. эмуляции Class-based наследования
Скажите, пожалуйста, что такое "грамотно" в Вашем понимании
!безграмотно

Ну, предположим, что кому-то удобнее вовлекать js-код в форму "взаимодействующих-классов-подклассов-и-прочих-лжесущностей", при этом у него потерь в оптимизации нет, грубых ошибок нет, каждая строчка обоснована, всё читабельно, задача выполняется. Имеем эдакий качественный prototype-based, зачем-то закамуфлированный барином под class-based. Это и будет грамотный class-based подход. Правда, никогда такого не видел. ;-)
  Topic: Prototype-based наследования vs. эмуляции Class-based наследования
Zeroglif

Replies: 70
Views: 52467

PostForum: Разное :: JavaScript   Posted: Thu Feb 14, 2008 12:08 pm   Subject: Prototype-based наследования vs. эмуляции Class-based наследования
что же такое Prototype-based наследование/программирование ?
Javascript - язык, где наследование реализовано через делегирование, это то же наследование, только вид сбоку - автоматическая переадресация сообщений к предку с одновременным связыванием self ("this" в javascript) с получателем сообщения. Механизм назван создателями языка именно наследованием, закреплён в стандарте. Иными словами, тупо обращаясь к энному свойству, мы уже по уши в наследовании и прототипах, т.к. механизм делегирования взведён изначально, да и вообще, что бы мы ни делали - оно всегда prototype-based...

Что касается конкретно prototype-based программирования - то это такая непереводимая игра слов в защиту javascript, направленная на борьбу со злобными аспидами, то бишь теми, кто:

а) упорно и не в кассу пользуется class-based терминологией;
б) пытается безграмотно калькировать class-based-чего-то-там на бедный несчастный javascript;

;-)
  Topic: Проблема с undefined значениями
Zeroglif

Replies: 15
Views: 6944

PostForum: Разное :: JavaScript   Posted: Mon Oct 01, 2007 7:48 pm   Subject: Проблема с undefined значениями
лучше использовать традиционный "for"
Разумеется,
var a = [0,1,2,3];
a[90000] = 'end';


Известно:
- длина массива (само собой);
- собственных/локальных свойств(индексов) мало, и они где-то разбросаны;
- других собственных свойств у массива нет (только индексы);
- Array.prototype и Object.prototype не трогали.

Нужно посчитать, сколько в массиве разбросано свойств. Предположу ещё раз, что оптимальнее (красившЕЕ) обойти свойства этого монстра не через for, а через for-in...
  Topic: 40 Наследование в JavaScript
Zeroglif

Replies: 231
Views: 439342

PostForum: Наблы :: Куроводство   Posted: Thu Sep 27, 2007 4:22 pm   Subject: 40 Наследование в JavaScript
Да где-же в вашем примере наследование?
Ну, если считать, что свойства у объекта могут быть "свои" vs. "наследуемые", то этот пример - не наследование в смысле ECMAScript (prototype-based inheritance), а энный способ создания/инициализации "своих" начальных свойств...
  Topic: 38_JavaScript: хитрости
Zeroglif

Replies: 77
Views: 179145

PostForum: Наблы :: Куроводство   Posted: Tue Sep 25, 2007 11:34 am   Subject: 38_JavaScript: хитрости
Кажется мне что неправда ваша.
Точка с запятой обязательна в отношении определённых конструкций (empty statement, variable statement, expression statement, do-while statement, continue statement, break statement, return statement, throw statement), но если программист "забыл" её поставить (вольно или невольно), то при соблюдении определённых условий движок его поправит, для чего в нём реализован механизм ASI (automatic semicolon insertion), см. ECMAScript 7.9.

интерпретатор всегда ругается
Какой интерпретатор и какой код?
 
Page 1 of 5 All times are GMT + 3 Hours
Goto page 1, 2, 3, 4, 5  Next
XML