Есть ли разница?
Есть ли между этими выражениями разница?
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, время: 01:20. |