Есть ли разница?
Есть ли между этими выражениями разница?
function func(arguments) {this.z=arguments} func(100) и function func(arguments){} func.z=100 Мб смешно но пока писал сам разобрался=) Поправите если что. Предполагается что func будет конструктором и this.z создаёт копию z для каждого экземпляра объекта а func.prototype.z создаёт единственную копию z для всех дочерних объектов и func.z не видна дочерним объектам |
Как ты замучал бессмысленными темами и флудом.
|
JSprog, ты так и не понял ничего?!
|
Вообще-то эта старая тема
Что я виноватт что ломал над этим голову пару часов а когда написал понял в чём дело? больше не буду=):no: |
Цитата:
|
Цитата:
Цитата:
|
Цитата:
Цитата:
|
Цитата:
Йа не нуп |
Думаю надо так.
function func(arguments){ var res=new Object(); res.z=arguments; return res; } //Пример var r=func(100); alert(r); alert(r.z); |
Пожалуйста, отформатируйте свой код!
Для этого его можно заключить в специальные теги: js/css/html и т.п., например: [js] ... ваш код... [/js] О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting. Во первых Во вторых что значит как надо? |
Цитата:
|
Я середнячок)
|
Цитата:
Или вы считаете, что я не знаю?;) |
Конечно знаешь...
...теперь... ...я же написал о результатах в первом посте |
Цитата:
|
Цитата:
|
Нет никакого желания, но если вы будете настаивать...:)
|
Мы настаиваем
|
Сравнивать такие конструкции... По-моему у тебя каша в голове... Я это разгребать не буду...
|
ха-ха
теперь ты точно спалися На самом деле можно объяснить одним предложением |
Цитата:
|
Типо умный такой? Реально думаешь что я немо?
Иди сам проспись А твои глупые отмазки сразу видно |
Цитата:
JSprog, B~Vladi, забейте отношения выяснять, нам же главное разобраться, есть ли разница, и, если есть, то в чём, не так ли? |
Первый вариант создаёт копию свойства для каждого экземпляра объекта то есть свойство экземпляра , а второй одну копию для всех экземпляров объекта то есть свойство класса
|
Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
Ок, что бы не тыкать друг на друга - расскажу я. function func(arguments) {this.z=arguments} Здесь this указывает на объект, откуда был вызван конструктор(функция), в данном слечае - это window: func(100); Поэтому свойство z мы устанавливаем для window. function func(arguments){} func.z=100 Здесь есть объект typeof=='function', и этому (только) объекту мы устанавливаем свойство z. Если бы мы записали fnc.prototype.z Свойство z имели бы все объекты типа function. Так пойдёт?! |
Цитата:
А вернее func.prototype.z func.z скорее всего вообще недоступно дочерним объектам <script> function yyy(){} yyy.z=100 xxx=new yyy alert(xxx.z) </script> Тому потверждение |
Цитата:
function func(arguments){} func.z = 10; var a = new func(10); alert(a.constructor.z); // 10 alert(func.z); // 10 Цитата:
Цитата:
|
В JavaScript нет классов. JSprog, харош уже, давай что-нибудь уже делай...
|
Связь с конструктором так как дочерние объекты не копируют свойство а тольок "читают" его
|
Как ты меня бесишь Влад. Думаешь я об этом не знаю? Я использую такую терминологию чтобы было понятней. И сам иди делай что-нибудь. Вот уж кто точно быдлокодер
|
Цитата:
|
JSprog, B~Vladi, выделяйте цитату на которую отвечаете, так удобней.
Цитата:
function A() {} A.prototype.z = 10; var a = new A(); A.prototype = null; a.constructor = null; A = null; alert(a.z); // 10 ? Почему так? Ведь конструктор и .prototype уже null. И объект "а" уже потерял связь с ним - .constructor тоже null. Цитата:
Цитата:
Цитата:
B~Vladi, JSprog, парни, ну мы ж, вроде, договорились. Забейте, нас щас не это интересует (меня больше ;) вы так хорошо рассказываете, а спускаетесь до выяснения отношений. Всё, забили). |
Цитата:
|
Цитата:
|
Ошибся
Метод экземпляра может быть вызван для любого экземпляра класса, но это не значит, что каждый объект содержит собственную копию метода, как в случае свойства экземпляра. Вместо этого каждый метод экземпляра совместно используется всеми экземплярами класса В JavaScript мы определяем метод экземпляра класса путем присваивания функции свойству объекта прототипа в конструкторе. Это касаетса только методов Цитата:
|
Цитата:
Цитата:
function A(x) { this.x = x; this.getX = funciton () { return this.x; }; } var a = new A(10); var b = new A(20); alert(a.getX()); // 10 alert(b.getX()); // 20 Объекты "а" и "b" будут иметь разное свойство "x", но одинаковый для обоих метод .getX? Или я не так понял? Цитата:
Цитата:
В частности, не было объяснено, каким образом объект общается с прототипом, если A.prototype уже null? И, если, всё-таки, конструктор и .prototype могут быть null, то получается, это: Цитата:
|
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
JSprog, подожди, тут я уже начал путаться.
Цитата:
Цитата:
function A(x) { this.x = x; this.getX = funciton () { return this.x; }; } var a = new A(10); var b = new A(20); // ну тут понятно alert(a.hasOwnProperty('x')); // true alert(b.hasOwnProperty('x')); // true // а здесь почему, если ты говоришь, что // метод getX - один на оба объекта alert(a.hasOwnProperty('getX')); // true alert(b.hasOwnProperty('getX')); // true Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
Цитата:
FireBug выдаёт ошибку на 4 строке this.prototype.getX = funciton () {\n |
Часовой пояс GMT +3, время: 08:07. |