Javascript.RU

Ключевое слово "this" в деталях

Update: Более новый материал по этой теме находится по адресу https://learn.javascript.ru/object-methods.

Ключевое слово this в javascript работает своеобразно, не так, как в других языках.

В отличие от PHP, Java, C++ и т.п, значение this в javascript не привязывается статически ни к какому объекту, а зависит от контекста вызова.

Разберем все 4 возможных случая.

Если функция вызывается через new как конструктор объекта, то this ставится на создаваемый объект:

function Animal(name) {
	this.name = name
}

function this javascript

В результате получается объект, инициализированный конструктором, с заполненным свойством name.

Если функция запущена как свойство объекта, то в this будет ссылка на этот объект.

obj.func(параметры)
// или
obj['func'](параметры)

При этом совершенно неважно, откуда эта функция взялась. Важно лишь, какой перед func стоит объект.

Создадим два любых объекта:

vasya = { 
	name: "Василий"
}
dima = { 
	name: "Дмитрий"
}

Определим никак не связанную с ними функцию say:

say = function() { 
	alert("Привет, я "+this.name)
}

Присвоим функцию свойству sayHi для обоих объектов:

vasya.sayHi = say
dima.sayHi = say

И теперь тестовый запуск:

vasya.sayHi()    // =>  "Привет, я Василий"

dima.sayHi()    // => "Привет, я Дмитрий"
// или так
dima['sayHi']()

В обоих случаях запускается одна и та же функция say, которая получает в this объект до точки.

Функцию можно вызвать, используя методы call и apply.

func.apply(obj, [параметры])
func.call(obj, параметр)

При таком вызове this будет установлен в obj.

Оба метода работают одинаково, но для call аргументы подставляются в вызов, а для apply - передается массив.

function sum(a,b) {
	this.c = a + b
}

var obj = {}

sum.call(obj, 1,2)
// или
sum.apply(obj, [1,2])

alert(obj.c)   // => 3

Вызов через apply удобен тем, что можно самостоятельно сформировать массив аргументов или модифицировать существующий.

say()

При таком вызове this ставится равным глобальному объекту (в браузере это window). Обычно, если функция использует this, то она не подразумевает запуск в таком виде, так что в 90% случаев такое значение this - результат ошибки в программе, глюк.

Если кратко срезюмировать все вышесказанное, то получится такая вот шпаргалка:

функция ключевое слово this


Автор: freelancer (не зарегистрирован), дата: 19 июня, 2008 - 17:54
#permalink

[a href="#" onclick="myFunction(this)"]

при таком вызове this будет указывать на [a] я так понимаю


Автор: Илья Кантор, дата: 9 июля, 2008 - 16:31
#permalink

Да


Автор: Frakir (не зарегистрирован), дата: 7 августа, 2008 - 16:03
#permalink

[a href="#" onclick="myFunction(this)"]
при таком вызове this будет указывать на [a] я так понимаю

А если [a href="javascript:myFunction(this);"]? У меня почему-то при таком вызове this ведет "на Марс".


Автор: poorking, дата: 14 декабря, 2010 - 18:44
#permalink

Я тоже сталкивался с такой проблемой, href="javascript: func(this);" в this был window


Автор: Константин (не зарегистрирован), дата: 24 октября, 2009 - 17:32
#permalink

Да, но вот переменная this внутри myFunction буде указывать на window


Автор: Octane (не зарегистрирован), дата: 9 июля, 2008 - 11:04
#permalink

Допустим у нас есть такой набор функций

function addEvent(obj, type, listener) {
		if(obj.addEventListener) {
				obj.addEventListener(type, listener, false);
		}
		else if(obj.attachEvent) {
				obj.attachEvent('on' + type, listener);
		}
}
function $(id) {
		var obj = document.getElementById(id);
		obj.bind = function(type, listener) {
				addEvent(this, type, listener);
				return this;
		}
		return obj;
}

тогда как сделать чтобы внутри вызова

$('id').bind('click', function() {
		alert(this);
});

this указывало на объект полученный через $('id')?


Автор: Илья Кантор, дата: 9 июля, 2008 - 16:33
#permalink

Этот вопрос очень подробно разобран в статье про замыкания. Там в конце разобран пример, очень похожий на ваш.


Автор: Антон (не зарегистрирован), дата: 20 октября, 2008 - 21:20
#permalink

По моему надо так:

function $(id) {
        var obj = document.getElementById(id);
        obj.bind = function(type, listener) {
                addEvent(this, type, function(){
                        return listener.apply(obj,arguments)
                });
        }
        return obj;
}

Так в listener this точно тот obj, который получен внутри функции $()
а вообще у всех событий и так this это элемент на котором событие произошло... то есть и без apply this будет тоже самое что getElementById.


Автор: Гость (не зарегистрирован), дата: 18 августа, 2011 - 10:49
#permalink
$('id').bind('click', function(e) {
    var item=e.target;    
    alert(item.id);
});

Автор: Гость (не зарегистрирован), дата: 30 мая, 2012 - 19:14
#permalink
return obj;

Заменить на

obj.call(obj);

Автор: Octane (не зарегистрирован), дата: 9 июля, 2008 - 23:21
#permalink

Спасибо.
Собственно проблема была только в ИЕ, изменил код следующим образом:

obj.attachEvent('on' + type, function() {listener.apply(obj);});

только теперь непонятно как реализовать detachEvent, может существует какойто другой способ?


Автор: Илья Кантор, дата: 10 июля, 2008 - 19:16
#permalink

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


Автор: polymorphm (не зарегистрирован), дата: 14 января, 2009 - 07:39
#permalink

думаю без ещё одного проверочного тэста -- не доконца всё ясно.

вот этого :

var a = new Object();
		
a.who = "I am A!";
		
a.b = new Object();
a.b.who = "I am A->B!!";
		
a.b.c = new Object();
a.b.c.who = "I am A->B->C!!!";
		
a.b.c.func = function () {
	window.alert(this.who);
}

// главный тэст
a.b.c.func(); // что выдаст -- "I am A!" или "I am A->B->C!!!" ???
		
// вспомогательный тест (навсякий случай)
a.b.func = a.b.c.func;
a.b.func(); // this не "приклеелся"-ли ?

ато может показаться непонятно как себя поведёт this в случае с ЦЕПОЧКОЙ объектов ..

в результате приведёного примера -- появляется "I am A->B->C!!!" и затем "I am A->B!!" (но небыло ниразу "I am A!" , а также заметим что this не приклеивался к телу "функции" . а подставлялся динамически) ...

.. это значит что в приведёном случае -- this работает также как this и в C++ , PHP и определённых других языках.....


Автор: Гость (не зарегистрирован), дата: 19 июня, 2011 - 08:20
#permalink

Данный код подтверждает, что this ведет как раз себя не так в PHP и С++.
"I am A!" и не выведется никогда, поскольку вы не запрашивали вывод сообщения с переменной из а

Разберемся с вашими тестами:

// главный тэст
a.b.c.func(); // что выдаст -- "I am A!" или "I am A->B->C!!!" ???

Будет выведено "I am A->B->C!!!", поскольку this ссылается на a.b.c.who

// вспомогательный тест (навсякий случай)
a.b.func = a.b.c.func;
a.b.func(); // this не "приклеелся"-ли ?

Вне зависимости от того, где описана ваша функция в этой случае this будет ссылаться на a.b.who

Так, что все верно. А чтобы вывелось "I am A!", необходимо
добавить строку:

a.func = a.b.c.func;
a.func();

Автор: m4d_5h4d0w (не зарегистрирован), дата: 15 января, 2009 - 23:05
#permalink

Здравствуйте.

Подскажите плиз, как избавиться от переполнения стэка... Я головой понимаю, что что-то глупое делаю, но найти второй день не могу.
Аналог кода:

function _obj ()
  {
  this.int1 = 0;
  this.time = 0;
  this.a = function () 
    {
    <...some code...>
    this.b();
    }
  this.b = function () {
    if (this.int1 != 1)
      {
      this.time++;
      setTimeout('this.b();', 100); // Вот эта гадость приводит к "стэк оверфлоу".
      } else {
      alert(time);
      }
    }
  }

var obj = new _obj;

Чтобы вопросов лишних не было - int1 изменяется пользователем вне функции, функция считает время. Я понимаю, что там чего-то с кавычками делать, но: а) без кавычек, ессесно, недопустимый аргумент, б) с ними оверфлоу, в) единственное, как оно работает - это прописать setTimeout('obj.b();' 100);<...> т.е. ссылка напрямую на еще не созданный объект. Но это есть уродство Sad , тем более хотелось бы универсальный объект. Выносить функцию вне объекта тоже не очень хочется.

Заранее спасибо)


Автор: Гость (не зарегистрирован), дата: 19 октября, 2009 - 23:28
#permalink

Кавычки двойные ...("...",...) поставь... мож поможет...


Автор: Гость (не зарегистрирован), дата: 16 июня, 2020 - 22:18
#permalink

I agree. thanks. savannah ga fencing


Автор: Francis (не зарегистрирован), дата: 18 июля, 2023 - 12:53
#permalink

It´s the best answer in fact


Автор: m4d_5h4d0w (не зарегистрирован), дата: 15 января, 2009 - 23:27
#permalink

Прошу прощения, уже нашел, здесь же, на сайте, так что все равно еще раз спасибо)) (сделал через
вар селф = зис;
сетТаймаут(функция () {селф.б()}, 100)
)


Автор: Rust (не зарегистрирован), дата: 27 февраля, 2009 - 01:26
#permalink

есть ява функция

function head_fahren1()

{    		var Xq = this.offsetLeft
		var Y = this.offsetTop
                      document.getElementById("login").value=""+Xq+"-"+Y
}

к ней обращщается объект TABLE:

<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 id ="table1" onMouseOver="head_fahren()" onMouseOut="head_fahren()">
...
</TABLE>

Но this все равно определяется,как window. Почему?


Автор: Илья Кантор, дата: 27 февраля, 2009 - 08:26
#permalink

Это частая ошибка. this правильный в самом обработчике:

onMouseOver="alert(this)"

Если ты вызываешь функцию из него, то у нее будет свой this. Можно явно указать нужный this через call:

onMouseOver="head_fahren.call(this)"

Автор: kefi, дата: 23 марта, 2009 - 19:46
#permalink

[quote]При таком вызове this ставится равным глобальному объекту window.[/quote]
Есть тут, imho, две ошибки, причем первая по всей статье прослеживается.

1) Конечно хорошо быть лаконичным, но имеющуюся ввиду фразу "присваивает this указатель на ... " лучше не произносить как "this ставится на ...", что может у многих новичков (у меня в т.ч.) вызвать неверное понимание с точностью до наоборот (русский язык это позволяет) , как содержимое this кладется в ... Лучше лаконично говорить "this указывает на ..." или вот в случае выше "ставит на него this" - "направляет на него this"

2) this в этом случае уазывает на глобальный объект, но глобальный объект в разных реализациях ECMA script, который в народе называют Javascript не есть window, это тоже затеняет смысл, который заключается в следующем :
Первоначально у глобального объекта срели прочих могут быть свойства, значением которых является сам глобальный объект
Так в наиболее распространенных браузерных javascript - глобальный объект имеет одно из свойств window, которое указывает на глобальный объект. В JScript реализации ECMAScript'а в WSH, например нет вообще свойства window, там глобальный объект имеет среди прочих пару полезных свойств WScript и WSH, но это не глобальный объект. В ActiveScript реализации ECMA script - не знаю, есть ли свойство window и свойство , указывающее на глобальный объект.

PS. просто сейчас пытаюсь разобраться в некоторых связанных с this и контекстами вопросах, не всегда удается ...


Автор: Илья Кантор, дата: 23 марта, 2009 - 19:56
#permalink

Про глобальный объект добавил упоминание и поправил фразу про указатель.


Автор: Бегимот (не зарегистрирован), дата: 25 марта, 2009 - 11:06
#permalink

Респект автору, достойная инфа по теме.


Автор: spike (не зарегистрирован), дата: 8 августа, 2009 - 17:34
#permalink

Спасибо за труд!

По-моему, этот код из примера надо исправить:

say = function(phrase) { 
    alert("Привет, я "+this.name)
}

Параметр phrase лишний. Так же?
Ерунда, но для читабельности полезным будет.


Автор: Dariraze (не зарегистрирован), дата: 1 сентября, 2009 - 09:52
#permalink

Подскажите, пожалуйста, не могу понять, как мне получить в функции ссылку на объект?

function imgCrop()
{
this.obj = document.getElementById("obj");
this.obj.addEventListener("mousemove", this.func, true);
}
imgCrop.prototype.func()
{
alert(this); // this ссылается на сам элемент this.obj, как мне получить сам объект ImgCrop?
}

Автор: MarSoft (не зарегистрирован), дата: 11 апреля, 2010 - 02:46
#permalink

Подскажите, пожалуйста, не могу понять, как мне получить в функции ссылку на объект?

Всё зависит от того, откуда эта функция вызывается. В данном случае она вызывается не как imgCorp.prototype.func(), а как obj.onclick() - соответственно this ссылается на obj.
Если очень надо, можно поменять конструктор:

function imgCrop()
{
this.obj = document.getElementById("obj");
this.obj.addEventListener("mousemove", this.func, true);
this.obj.self = this;
}

и ссылаться в функции на this.self.


Автор: Pellegrino, дата: 22 февраля, 2010 - 12:35
#permalink

Подскажите пожалуйста, почему не работает такой код:

function closer(){
this.showsec= 15;
}

closer.prototype= {
progress: function(){
alert(this);
},

start: function(){
alert(this);
setTimeout.call(this, this.progress, 1000 );
}
}

var cl= new closer();
cl.showsec= 20;
cl.start();


Автор: MarSoft (не зарегистрирован), дата: 11 апреля, 2010 - 02:57
#permalink

Правильно будет не так

start: function(){
alert(this);
setTimeout.call(this, this.progress, 1000 );
}

а так:

start: function(){
alert(this);
var self = this;
setTimeout(function(){this.progress.call(self), 1000);
}

Потому что, даже если мы функции setTimeout подсунем свой this вместо окна, это не повлияет на this при срабатывании таймера.
(надеюсь, понятно изложил)


Автор: Гость (не зарегистрирован), дата: 11 апреля, 2010 - 02:59
#permalink

Извините, очепятался во втором варианте:

start: function(){
    alert(this);
    var self = this;
    setTimeout(function(){ this.progress.call(self); }, 1000);
}

Автор: Дмитрий (гость) (не зарегистрирован), дата: 18 июня, 2010 - 07:25
#permalink

Возможно я ошибаюсь, но на мой взгляд должно быть так:

start: function(){
    alert(this);
    var self = this;
    setTimeout(function(){ self.progress.call(self); }, 1000);
}

P.S. Я пробовал похожий код на 'setInterval' и с this пример не работал.


Автор: Pellegrino, дата: 22 февраля, 2010 - 12:51
#permalink

Почитал статью про замыкания, переписал так:

start: function(){
		var that= this;
		function progress(){
			lg(that);
		};
		alert(this);
		setTimeout( progress, 1000);
	}

но вреравно интересно, почему не работает

setTimeout.call(this, this.progress, 1000 );

Автор: Pellegrino, дата: 22 февраля, 2010 - 14:46
#permalink

хотя такой вариант работает

function k(){
	alert(this.bb);
}

function k2(){
	this.bb= 15;
	setTimeout.call(this, k, 1000 );
}
k2();

Автор: MarSoft (не зарегистрирован), дата: 11 апреля, 2010 - 03:01
#permalink

Работает, потому что здесь объектом this во всех случаях является глобальный объект, и он же используется при срабатывании таймера.


Автор: DenSparrow (не зарегистрирован), дата: 16 июня, 2010 - 11:55
#permalink

Здравствуйте!
А, если можно, объясните, пожалуйста, в чём разница между конструкцией из примера про "Васю и Диму":

say = function(){
       alert("Hi, I am " + this.name);
}

и конструкцией:

say = function(){
         alert("Hi, I am " + arguments.callee.name);
}

Или это два идентичных способа сделать одно и тоже действие, просто первый - короче?


Автор: crefezentee (не зарегистрирован), дата: 5 февраля, 2011 - 03:08
#permalink

хорошее начало


Автор: Гость (не зарегистрирован), дата: 16 июня, 2020 - 22:20
#permalink

Автор: Live Chat (не зарегистрирован), дата: 13 января, 2024 - 23:21
#permalink

Useful article for me. Thank you for letting me know. News Your Blog has useful information; you are a skilled webmaster. Live Chat


Автор: Гость (не зарегистрирован), дата: 18 июля, 2023 - 12:57
#permalink

Really it´s the best way to start Aire Acondicionado Para Oficina


Автор: Monte (не зарегистрирован), дата: 12 марта, 2011 - 10:39
#permalink
var viewBaner = {
	img:null,
	ShowBaner : function(a)
	{
		alert(a);
// почему то выдает не  [object] а значение его href 
// почему не передается весь объект?
		//this.img.src='1.gif';
	},
	Replace : function()
	{
		this.img = document.getElementById('img');
		var a = document.getElementsByTagName('a');
		var _this = this;
		a[0].onmouseover= function(){  _this.ShowBaner(this)};
	}
}
viewBaner.Replace();

подскажите пожалуйста как в этих случаях работает this


Автор: kiborg (не зарегистрирован), дата: 20 марта, 2011 - 23:00
#permalink

извините пожалуйста, подскажите код, удаляющий строку, например в таблице на которую нажали?


Автор: Гость (не зарегистрирован), дата: 1 апреля, 2011 - 14:48
#permalink

если использовать jquery

то проще некуда

$("#table td").click(function(){
                              $(this).remove();
                                        });

Автор: Гость (не зарегистрирован), дата: 1 апреля, 2011 - 14:50
#permalink

а вот так удалится что угодно

$("*").click(function(){
                              $(this).remove();
                                        });

Автор: Гость (не зарегистрирован), дата: 14 июня, 2011 - 19:02
#permalink

Помогите пожалуйста разобраться

function obj1(){
  this.div=document.createElement("div");
  document.body.appendChild(this.div);
    this.txt=document.createTextNode("test");
    this.div.appendChild(this.txt);    
  this.showalert= function () {
     alert(this.txt.nodeValue);
     }    
this.div.onclick=this.showalert;
}
var a=new obj1();

результат -ошибка this.txt is udefined


Автор: Гость (не зарегистрирован), дата: 15 июня, 2011 - 13:13
#permalink

сам разобрался, может кому еще поможет

function obj1(){
  this.div=document.createElement("div");
  document.body.appendChild(this.div);
    this.txt=document.createTextNode("test");
    this.div.appendChild(this.txt);   
    var self = this; //запомнил текущий this
  this.showalert= function () {
     alert(self.txt.nodeValue); // и тут его использовал
     }    
     this.div.obj = this; 
this.div.onclick=this.showalert;
}
var a=new obj1();

Автор: Гость (не зарегистрирован), дата: 16 августа, 2011 - 12:15
#permalink

say = function() {
alert("Привет, я "+this.name)
}

vasya = {
name: "Василий"
}
dima = {
name: "Дмитрий"
}

vasya.sayHi = say
dima.sayHi = say

не работает, подскажите плз где у меня ошибка


Автор: melky, дата: 16 августа, 2011 - 19:41
#permalink

он работает...

say = function() {
alert("Привет, я "+this.name)
}

vasya = {
name: "Василий"
}
dima = {
name: "Дмитрий"
}

vasya.sayHi = say;
dima.sayHi = say;

*!*
vasya.sayHi();
dima.sayHi();
*/!*

Автор: pashak, дата: 24 августа, 2011 - 20:52
#permalink

Работаю с JavaScript уже более трёх лет. Хотелось бы поделиться опытом по этой теме. Может, это уже известно вам, но не отнеситесь критически, потому что это полезно для новичков.

Уменьшаем расход памяти
Я заметил, что есть тенденция использовать замыкания, там, где без них можно и обойтись. На самом деле замыкания - это очень плохо при неправильном использовании. Всё дело в памяти. Несмотря на концепцию, что скриптовый программист (наш любимый JS, например) чаще всего не должен задумываться об используемой памяти (все автоматизировано и происходит без его участия), стОит думать, сколько выделено на ту или иную вкладку памяти, потому что механизм замыканий может скушать a lot of memory. Для оптимизации использована именно особенность слова this.

Возьмём всё тот же пример из темы замыканий, где каждому [div] (в моём случае - [a] и их в 100 раз больше) присваивается вызов alert() с номером в цикле. Тестировал я в хроме, потому что там удобное отображение расхода памяти для каждой из вкладок.

Первый пример:

(function init(){
for(var i=1000,a;i--;){
a=document.body.appendChild(document.createElement("a"));
a.href="#";
a.innerHTML="сообщение: "+i+";";
a.onclick=(function init(x){
return function onclick(){
alert(x);
return false;
};
})(i);
}
})();

На оптимизацию в виде обратного прохода не обращайте внимания - это не ключевой момент.
В этот примере использован механизм замыканий. Т.е. для каждого элемента браузер создаёт НОВУЮ функцию с ЗАМЫКАНИЕМ (если быть точнее, то с обращением к замкнутой переменной) внутри неё. Хром показал расход памяти в 23,2 МБ для данной вкладки.

Вариант 2:

(function init(){
for(var i=1000,a;i--;){
a=document.body.appendChild(document.createElement("a"));
a.href="#";
a.innerHTML="сообщение: "+i+";";
a.$data=i;
a.onclick=function onclick(){
alert(this.$data);
return false;
};
}
})();

Механизм замыканий исключён, память больше не расходуется на так называемую [[closure scope]]. Использована возможность присваивать элементам (как и любым объектам) пользовательские свойства (я назвал его $data, но это дело уже лично каждого). Согласно спецификации внутри функции onclick this показывает на элемент, на котором произошло событие, с которого [элемента], собственно, и берём данные. Хром показывает 20,5 МБ. Для меня - это существенный выигрыш (а что, если объектов несколько миллионов?). Но функций, как и в предыдущем примере создаётся тоже 1k.

Третий пример:

(function init(){
var f=function onclick(){
alert(this.$data);
return false;
};
for(var i=1000,a;i--;){
a=document.body.appendChild(document.createElement("a"));
a.href="#";
a.innerHTML="сообщение: "+i+";";
a.$data=i;
a.onclick=f;
}
})();

На моё мнение оптимизировано максимально, т.е. улучшать уже некуда: одна функция для тысячи элементов, она использует механизм this. Хром показывает 20,0 МБ. Всего-то 500k, но оптимизация тоже проихошла. Напомню, что в пользовательские свойства можно вписывать любые значения: числа, строки, объекты.
Настоятельно рекомендую пользоваться именно таким механизмом в подобных случаях. Как пример - реализация модели MVC.

P.S. Извиняюсь за поехавшие в коде табы.


Автор: B@rmaley.e><e, дата: 25 августа, 2011 - 11:44
#permalink

20мб на 1000 элементов? 20кб на элемент — не много ли?
В том же CDT можно сделать снимок кучи, и её размер в Ваших примерах не превосходит 4мб.

Но в целом, идея верная, замыкания кушают память.


Автор: pashak, дата: 10 сентября, 2011 - 03:20
#permalink

Имелось в виду, что 20Мб - это целая вкладка. По крайней мере, я не знаю, как узнать точный размер в физической памяти объекта JavaScript, поэтому и указал размер целой вкладки. Чтобы узнать, сколько приблизительно занимает вся эта "каша", нужно запустить эту же страницу, но уже без данного скрипта и вычесть указанный размер от 20Мб (у вас может быть и не 20Мб, а другое число).
Замыкания не просто кушают память. Они просто "пожирают её". Как-нибудь попытаюсь выяснить (сейчас нету времени), является ли в примере:

function f(){
    document;
};

переменная document замыканием. Не спешите с ходу опровергать этот тезис, лучше приведите убедительные доказательства, если это действительно неправда.


Автор: Wayne, дата: 18 сентября, 2011 - 18:29
#permalink

>> "P.S. Лучшее "спасибо" - не комментарий, как все здорово, а рекомендация или ссылка на статью."
- Джон Рейсиг "Профессиональные приёмы программирования на JavaScript".

Как говорится, прочитал всё от корки до корки. Касательно только JavaScript на этом сайте.
Замечательный сайт в плане общего ознакомления с тем, что такое JavaScript. И всё же скажу, что об ООП здесь сказано на очень низком уровне. Статьи про объекты и ООП здесь читателям позволят научиться лишь не блуждать в коде, который они читают. Сами они навряд ли смогут после прочтения этих статей что-либо сделать.
И всё же сайт на столько же хорош в своей тематики, на сколько в своей htmlbook.ru.

Для тех же, кто желает продолжить изучение и научиться хорошо(профессионально) программировать на JavaScript, хотел бы посоветовать книгу Джона Рейсига(главного разработчика библиотеки jquery) под названием "Профессиональные приёмы программирования". Хорошая книга, которая позволит вникнуть в суть JavaScript, познакомит с технологией Ajax и, что немаловажно, научит мыслить в режиме ООП.
В данной книге напрочь отсутствуют введение в JavaScript и прочие обучающие детали. Поэтому эта книга очень хороша для того, чтобы продолжить изучать JavaScript сразу после прочтения статей на этом сайте. =)
P.S. отсутствие введения и прочей шелухи для новичков сократило объём книги с стандартных 700-1000 страниц для книг схожей тематики, до 250.


Автор: bykastar, дата: 3 октября, 2011 - 15:28
#permalink

Прошу прощения, всё работает! Комент удалить бы.


Автор: Гость (не зарегистрирован), дата: 10 апреля, 2012 - 20:01
#permalink

Подскажите пожалуйста в моём случае

function a(){
    this.b = 'Hello';
    $('#id').click(function(){
        alert(this.b);
    })
}

Как мне обойти эту ситуацию и обратиться к свойству b ..... можно конечно перед этим поставить var self = this и обращаться уже к self, а есть ли более изящный способ ?


Автор: natalitvinenko, дата: 31 мая, 2012 - 14:31
#permalink

Как бы на клиентской стороне выяснить в скрипте путь до самого этого скрипта-ну то, что на серверной стороне выглядит как WScript.ScriptFullName ? Сунулась сюда в надежде, что this и есть оно, так нет :-)


Автор: clearwater (не зарегистрирован), дата: 19 июня, 2012 - 18:57
#permalink

Имеем:

function test(){
   alert(this);
}

В IE8 - [object.Window]
В FF 3.6.8 - [object.Window]
В FF 13 (Linux64) - undefined
В Chromium (Linux64) 19.0.1084.56 - undefined

Вопрос: и как это понимать?


Автор: clearwater (не зарегистрирован), дата: 19 июня, 2012 - 23:15
#permalink

Отвечаю сам себе:
This - MDN

function f2(){  
  "use strict"; // see strict mode  
  return this;  
}  
  
f2() === undefined;

this должна быть undefined, т.к. f2 была вызвана без предоставления контекста (например window.f2() )


Автор: Actine, дата: 28 июня, 2012 - 16:24
#permalink

Можно еще дописать, на всякий случай, что в такой-вот конструкции:

obj1.method.call(obj2, params)

this будет obj2, и, как я понял, это единственная ситуация, где следует вызывать функцию через call/apply, а не напрямую.
(объясняю, если нужно вызвать функцию, которая находится в каком-то объекте, но как this передать ей не этот объект, а другой. В принципе, нужный объект можно и параметром передать, но иногда такой вариант удобнее, в особенности если у Вас смоделированы "абстрактные классы", как тот же Math)


Автор: Grkov (не зарегистрирован), дата: 15 июля, 2012 - 18:46
#permalink

Всем привет...

var a = {
  'name' : 'a',
  'say' : function () {
    console.log(this.a)
  }
  'b' : {
    'name' : 'b'
  }
}

Как заставить работать a.b.say() ?
т.е требуется сохранить вложенность b в а, b должен тянуть уже определенную функцию say в "родителе"

Как вариант

var a = {
  'name' : 'a',
  'say' : function () {
    console.log(this.a)
  }
  'b' : {
    '__proto__' : a,
    'name' : 'b'
  }
}

Но это зацикливание ссылок, браузер не ругается.. но это не гуд...


Автор: Гость (не зарегистрирован), дата: 15 июля, 2012 - 18:47
#permalink

Всем привет...

var a = {
  'name' : 'a',
  'say' : function () {
    console.log(this.name)
  }
  'b' : {
    'name' : 'b'
  }
}

Как заставить работать a.b.say() ?
т.е требуется сохранить вложенность b в а, b должен тянуть уже определенную функцию say в "родителе"

Как вариант

var a = {
  'name' : 'a',
  'say' : function () {
    console.log(this.name)
  }
  'b' : {
    '__proto__' : a,
    'name' : 'b'
  }
}

Но это зацикливание ссылок, браузер не ругается.. но это не гуд...


Автор: Гость (не зарегистрирован), дата: 11 октября, 2012 - 15:01
#permalink

Свойства, методы события объектов доступные в коде для элементов, где нибудь водятся здесь ?... Или все попутались в атрибутах HTML тегов, DOM...


Автор: binzz (не зарегистрирован), дата: 1 ноября, 2012 - 05:14
#permalink

Вы бы разделили все: 1.атрибуты и теги HTML и CSS, 2.DOM, 3.атрибуты/свойства, методы, события и объектов в коде JavaScript.

Например, событие onreadystatechange или свойства complete || readyState, для img, вообще нигде нет.

Привели бы общий список событий, свойств, методов, доступных в кодe JavaScript.

Ну, в общем вам еще писать и писать...))


Автор: Гость (не зарегистрирован), дата: 23 ноября, 2012 - 08:57
#permalink
function Pic (N,T,d,f,w,h,r)
{
this.Name=N;
this.Tip=T;
this.razmehnadiske=d;
this.razmerfaila=f;
this.width=w;
this.height=h;
this.razreh=r;
this.izmen=function()
{document.write ('<img src="this.Name.this.Tip" this.width="" this.height="">');}
}
var Pic1=new Pic("pict1","jpg","F:\ukigrad",100,300,600,1024);
var Pic2=new Pic("pict2","jpg","F:\ukigrad",300,900,1200,2024);

как правильно описать картинку с помощью объектов которые есть?


Автор: Гость (не зарегистрирован), дата: 25 августа, 2013 - 06:21
#permalink

Вопрос к гуру js.
Имеется код (это всего лишь удобный пример, но суть вопроса остается)

// основной объект
Country = {
  name: 'Russia',
  capital: {
    name: 'Moscow',
    showDescription: showCapitalDescr
  }
}

// другой объект, просто чтобы понять, почему showCapitalDescr вынесена в отдельную ф-цию
AntiCountry = {
  name: 'USA',
  capital: {
    name: 'Washington',
    showDescription: showCapitalDescr
  }
}

// собственно ф-ция
function showCapitalDescr() {
   alert(this.name + ' is the capital of ' + this.[[parent_obj]].name); // тут надо обратиться к полю name "родительского" объекта
}

Нужно обратиться к свойству Country.name изнутри объекта capital. Есть ли какие более-менее элегантные способы это сделать? Кроме переделывания всего кода с созданием двух классов Country, Capital, и специального поля country внутри Capital (для хранения к какой стране принадлежит) и с последующим присваиванием в виде

capital1 = new Capital();
capital1.name = 'Moscow';
capital1.country = country1; // или можно capital1.country_name = country1.name, но вдруг понадобятся другие поля объекта Country
country1.capital = capital1;

Так код становится намного больше, появляется перекрестная ссылка, а главное - для моей задачи классы вовсе не нужны, по сути только 2 "статичных" объекта, а то и 1.

Похожий вопрос уже задавался в комментарии чуть выше, но ответа не было. Тут либо возможности js особо не позволят развернуться, чтоб так сделать, либо найдется спец, который решит данную задачку.


Автор: vaskia, дата: 23 ноября, 2016 - 14:02
#permalink

Можно попробовать так

// основной объект
Country = {
  name: 'Russia',
  capital: {
    name: 'Moscow',
    showDescription: function() {
        Country.func(this.name);
      }
  },
  func: function(x) {
    showCapitalDescr(x, this.name);
  }
}

// другой объект, просто чтобы понять, почему showCapitalDescr вынесена в отдельную ф-цию
AntiCountry = {
  name: 'USA',
  capital: {
    name: 'Washington',
    showDescription: function() {
      AntiCountry.func(this.name);
    }
  },
  func: function(x) {
    showCapitalDescr(x, this.name);
  }
}

// собственно ф-ция
function showCapitalDescr(x, y) {
   console.log(x + ' is the capital of ' + y); // тут надо обратиться к полю name "родительского" объекта
}

AntiCountry.capital.showDescription();

Автор: Гость (не зарегистрирован), дата: 5 сентября, 2013 - 13:03
#permalink

Очевидно, на этом сайте не тусят специалисты в js)) Одни кодеры, что и умеющие так только добавить в html событие onclick)


Автор: hfts (не зарегистрирован), дата: 26 января, 2014 - 19:41
#permalink

Помогите разобраться, вообщем есть такой код:

$(document).ready(function(){

function Boxs(width,height,bgColor){
this.width = width;
this.height = height;
this.bgColor = bgColor;
}

var box = new Boxs(250,250,'green');
var box2 = new Boxs(200,200,'yellow');

//Создание коробки
Boxs.prototype.createBox = function(width,height,bgColor){
$('#idDiv').append('

');
$('.clBox').css({'width' : this.width+'px', 'height' : this.height+'px', 'background-color' : this.bgColor, 'margin' : '80px'});
}

box.createBox();
box2.createBox();

});

Когда я вызываю метод "createBox()" оно создает блок с заданными параметрами в объекте "box", но если я после этого вызову тот же метод но уже для другого объекта который имеет другие параметры, то "this" будет брать параметры из "box2", и сделает 2 блока со свойствам "box2".

Как сделать так что бы у меня вышли 2 блока с разными параметрами (только осваиваю js).

Просьба помочь.


Автор: hfts (не зарегистрирован), дата: 26 января, 2014 - 19:43
#permalink

В строке:
Boxs.prototype.createBox = function(width,height,bgColor){

(width,height,bgColor) были пусты вначале, это я экспериментировал хД.


Автор: Гость (не зарегистрирован), дата: 11 июня, 2018 - 12:27
#permalink

Помогло однозначно websash


Автор: commercial cleaning service west palm beach (не зарегистрирован), дата: 27 ноября, 2020 - 20:25
#permalink

Couldn't be written any better. Reading this post reminds me of my old room mate! He always kept talking about this. I will forward this article to him. Pretty sure he will have a good read. Thanks for sharing!


Автор: roof contractor west palm beach (не зарегистрирован), дата: 27 ноября, 2020 - 21:07
#permalink

What a great web blog . I like this blog because of its design and interface. It is user friendly and it is nice to visit the blog.


Автор: kyliesmith (не зарегистрирован), дата: 10 декабря, 2021 - 05:29
#permalink

This information is magnificent. I understand and respect your clear-cut points. I am impressed with your writing style and how well you express your thoughts
squidgame


Автор: Гость (не зарегистрирован), дата: 7 марта, 2022 - 10:46
#permalink

Скачать игру бесплатно Clash Royale Mod APK: https://modpree.com/clash-royale/


Автор: Гость (не зарегистрирован), дата: 5 апреля, 2022 - 18:46
#permalink

Автор: Гость (не зарегистрирован), дата: 5 апреля, 2022 - 18:47
#permalink

Автор: apkhall (не зарегистрирован), дата: 7 апреля, 2022 - 10:04
#permalink

Race to amass the brand new BMW M4 GT3! Different in-game rewards will probably be out there to win comparable to a brand new pores and skin for the Renault R.S. 01 and a brand new driver card.
GT Manager mod apk


Автор: Гость (не зарегистрирован), дата: 12 апреля, 2022 - 15:23
#permalink

Автор: Гость (не зарегистрирован), дата: 16 апреля, 2022 - 03:06
#permalink

Автор: apksoure (не зарегистрирован), дата: 23 апреля, 2022 - 09:01
#permalink

Автор: WallaceOrtiz (не зарегистрирован), дата: 25 мая, 2022 - 06:59
#permalink

Можно ли применить его для практики на https://techupnew.com/manga-dogs?


Автор: Heidi Hees (не зарегистрирован), дата: 25 мая, 2022 - 20:39
#permalink

Shemale Treff füllt die Lücke zwischen einer Anwendung wie Tinder und Grindr, die sich speziell an Heterosexuelle und Homosexuelle richtet. Obwohl man sich sowohl bei Tinder als auch bei Grindr als Transgender registrieren kann, sind sie nicht speziell für diesen Zweck gedacht. Das gilt auch für diese Website. Natürlich möchten Sie auch hier nicht in eine Schublade gesteckt werden. Aber wenn Sie auf der Suche nach einem Shemale sind, ist dies die richtige Website für Sie!


Автор: irkala (не зарегистрирован), дата: 4 марта, 2023 - 20:38
#permalink

I enjoy reading insightful and reliable content. https://irkala.co

/">فروشگاه اینترنتی

Your blog has useful information; you are a skilled webmaster. Continue to post.

Автор: playhind (не зарегистрирован), дата: 30 мая, 2022 - 11:55
#permalink

Battle Bay Apk New Update is now available on Google Play Store
Battle Bay MOD APK


Автор: Ufa1688 (не зарегистрирован), дата: 14 июня, 2022 - 12:31
#permalink

Israel withdrew ufa1688 from Gaza in 2005 but, ufabet เข้า สู่ระบบ with the help of Egypt, clamps 1688.com down on the borders of the ทางเข้า Ufa 1688 enclave now governed by แทงบอลออนไลน์ Hamas Islamists. Dream Gaming Palestinian Big gamingauthorities have limited self-rule ลิงค์รับทรัพย์ in the West Bank บาคาร่าwhich is dotted หวยออนไลน์with Israeli settlements.


Автор: Gabriela Fuschi (не зарегистрирован), дата: 14 июня, 2022 - 20:37
#permalink

Geile Transen hält fest, dass für das beste Begleitungserlebnis zwei Dinge im Vordergrund stehen sollten: Sicherheit und vor allem Spaß!


Автор: Serife Reijnen (не зарегистрирован), дата: 6 июля, 2022 - 20:37
#permalink

Sexdate Gravatar


Автор: pipahaha4 (не зарегистрирован), дата: 19 июля, 2022 - 05:10
#permalink

Thank you for your article. word counter - a useful tool in life, especially for writing a thesis or doing office work, I would like to recommend to you.


Автор: ali a (не зарегистрирован), дата: 2 августа, 2022 - 17:23
#permalink

Geile Transen hält fest, dass für das beste Begleitungserlebnis zwei Dinge im Vordergrund stehen sollten: Sicherheit und vor allem Spaß!


Автор: Гость (не зарегистрирован), дата: 2 августа, 2022 - 17:28
#permalink

hi
Thank you for your article. word counter - a useful tool in life, especially for writing a thesis or doing office work, I would like to recommend to you.


Автор: آهنگ جدید (не зарегистрирован), дата: 21 августа, 2022 - 19:10
#permalink

Thank you for your article
آهنگ جدید


Автор: pikashow app for pc (не зарегистрирован), дата: 21 октября, 2022 - 09:56
#permalink

I'm dazed, I ought to say. Only generally do I go over a blog that is both educative and fascinating, and obviously, you have nailed it on pikashow app for pc. The issue is an issue that lacking individuals are discussing.


Автор: Alen n (не зарегистрирован), дата: 11 ноября, 2022 - 12:37
#permalink

Your blog content is useful
Rafti


Автор: Petra Koenen (не зарегистрирован), дата: 2 декабря, 2022 - 21:03
#permalink

Sex Kleve ist ideal für einmalige Verbindungen. Das Schöne an lockeren Beziehungen ist, dass man keine Gegenleistung erwartet. Sie sind nicht verpflichtet, sich an jemanden zu binden, den Sie nicht mögen, und Sie können die Sache einfach vergessen und sich jemand anderem zuwenden. Aber wenn Sie es sich zur Gewohnheit machen wollen, können Sie die Person in Ihrem Kontakt behalten und es erneut versuchen.


Автор: conconventer (не зарегистрирован), дата: 18 декабря, 2022 - 20:58
#permalink

There are lots of Youtube Mp3 Conconventer/yt to mp3 comconvert available which considered being best. Basically a YouTube to MP3 converter can easily convert your videos into audio format without any problem. When you use any converter, you have to add the URL of YouTube video and simply click the convert button. With this super simple step, you will get your video as MP3 file immediately. In this article, we have mentioned 11 best Youtube Mp3 Conconventer so you can pick according to your requirements. Every converter contains some specific and useful features. Therefore, some mp3 comconver are different as compared to others. For your convenience, here is the list of 11 best Youtube Mp3 Conconventer so you can choose easily.


Автор: Гость (не зарегистрирован), дата: 29 декабря, 2022 - 10:02
#permalink

Thank you for sharing this useful article information.I am really impressed with the article you provided.
Camas escritorio juvenil


Автор: Гость (не зарегистрирован), дата: 15 января, 2023 - 06:53
#permalink

this is very good article
thank you for sharing this
دانلود جدیدترین آهنگها


Автор: 카지노사이트 (не зарегистрирован), дата: 19 января, 2023 - 07:10
#permalink

What a post I've been looking for! I'm very happy to finally read this post. 카지노사이트 Thank you very much. Can I refer to your post on my website? Your post touched me a lot and helped me a lot. If you have any questions, please visit my site and read what kind of posts I am posting. I am sure it will be interesting.
ghj


Автор: Nex1Music (не зарегистрирован), дата: 21 февраля, 2023 - 16:34
#permalink

Автор: Гость (не зарегистрирован), дата: 14 марта, 2023 - 20:00
#permalink

Автор: Geometry Dash Scratch (не зарегистрирован), дата: 17 марта, 2023 - 09:58
#permalink

Geometry Dash Scratch game has a very simple gameplay style. Each time you touch the screen, the role jumps, there are no other secondary actions, and in the main menu interface you can select control roles and system settings etc.


Автор: UFAX53 (не зарегистрирован), дата: 19 марта, 2023 - 11:49
#permalink

Playing games with friends is great fun regardless of how close you physically are to your friends. [ เว็บพนันออนไลน์ ] And having fun isn’t only for kids. : )


Автор: X53 (не зарегистрирован), дата: 7 апреля, 2023 - 08:26
#permalink

You can play anytime, anywhere. UFAX53 [ UFABET ] is to be happy.


Автор: motorcyclehelmet (не зарегистрирован), дата: 16 апреля, 2023 - 16:50
#permalink

good helmets motorcycle accessories store کلاه کاسکت


Автор: kolahmotor (не зарегистрирован), дата: 16 апреля, 2023 - 16:53
#permalink

veryyy nice site motorcycle کلاه کاسکت


Автор: kolahmotor46 (не зарегистрирован), дата: 16 апреля, 2023 - 16:54
#permalink

best helmet motorcycle accessories کلاه کاسکت


Автор: kolahkasket (не зарегистрирован), дата: 16 апреля, 2023 - 16:56
#permalink

thank for veryyyy good site کلاه کاسکت


Автор: Musictarin (не зарегистрирован), дата: 26 апреля, 2023 - 15:38
#permalink

Very nice blog thanks for sharin دانلود اهنگ موزیک ترین


Автор: Mobil Sesli Sohbet Siteleri (не зарегистрирован), дата: 23 мая, 2023 - 21:30
#permalink

very nice sharing thanks


Автор: Sesli Sohbet, Sesli Chat, Mobil Sesli Sohbet Siteleri (не зарегистрирован), дата: 27 мая, 2023 - 20:43
#permalink

very nice sharing thanks


Автор: motorcycle (не зарегистрирован), дата: 1 июня, 2023 - 04:55
#permalink

کلاه کاسکت فروشگاه قیمت و خرید کلاه ایمنی موتور سیکلت بهترین کلاه کاسکت ازران قیمت وسپایی کراسی و کلاه کاسکت فک متحرک قیمت و خرید از نمایندگی و فروشگاه
کلاه کاسکت فروشگاه قیمت و خرید کلاه ایمنی موتور سیکلت
لوازم موتور سواری ارزان قیمت تهران و کلاه موتور سیکلت خرید کلاه کاسکت سایت کلاه کاسکت وسپایی راپیدو و ردلاین سایت و نمایندگی کلاه کاسکت فک متحرک تهران و بهترین قیمت ایران بهترین فروشگاه لوازم موتورسیکلت بهترین نمایندگی و فروشگاه کلاه کاسکت وسپایی عینک دار قطعات موتور سیکلت ارزان قیمت و کلاه کاسکت کراسی و بدون فک کلاه وسپا اصل و عینک کراسی بهترین کلاه کاسکت موتور سیکلت ارزان قیمت فروشگاه و سایت قیمت و خرید کلاه ایمنی موتور سیکلت خرید کلاه کاسکت موتور سیکلت سایت اینترنتی و انلاین کلاه کاسکت


Автор: کلاه کاسکت (не зарегистрирован), дата: 1 июня, 2023 - 04:57
#permalink

کلاه کاسکت فروشگاه قیمت و خرید کلاه ایمنی موتور سیکلت بهترین کلاه کاسکت ازران قیمت وسپایی کراسی و کلاه کاسکت فک متحرک قیمت و خرید از نمایندگی و فروشگاه
کلاه کاسکت فروشگاه قیمت و خرید کلاه ایمنی موتور سیکلت
لوازم موتور سواری ارزان قیمت تهران و کلاه موتور سیکلت خرید کلاه کاسکت وسپایی راپیدو و ردلاین سایت و نمایندگی کلاه کاسکت فک متحرک تهران و بهترین قیمت ایران بهترین فروشگاه لوازم موتورسیکلت قیمت کلاه کاسکت بهترین نمایندگی و فروشگاه کلاه کاسکت وسپایی عینک دار قطعات موتور سیکلت ارزان قیمت و کلاه کاسکت کراسی و بدون فک کلاه وسپا اصل و عینک کراسی بهترین کلاه کاسکت موتور سیکلت ارزان قیمت فروشگاه و سایت قیمت و خرید کلاه ایمنی موتور سیکلت خرید کلاه کاسکت موتور سیکلت سایت اینترنتی و انلاین کلاه کاسکت


Автор: کلاه کاسکت (не зарегистрирован), дата: 1 июня, 2023 - 04:58
#permalink

کلاه کاسکت فروشگاه قیمت و خرید کلاه ایمنی موتور سیکلت بهترین کلاه کاسکت ازران قیمت وسپایی کراسی و کلاه کاسکت فک متحرک قیمت و خرید از نمایندگی و فروشگاه
کلاه کاسکت فروشگاه کلاه کاسکت فروشگاه قیمت و خرید کلاه ایمنی موتور سیکلت
لوازم موتور سواری ارزان قیمت تهران و کلاه موتور سیکلت خرید کلاه کاسکت وسپایی راپیدو و ردلاین سایت و نمایندگی کلاه کاسکت فک متحرک تهران و بهترین قیمت ایران بهترین فروشگاه لوازم موتورسیکلت بهترین نمایندگی و فروشگاه کلاه کاسکت وسپایی عینک دار قطعات موتور سیکلت ارزان قیمت و کلاه کاسکت کراسی و بدون فک کلاه وسپا اصل و عینک کراسی بهترین کلاه کاسکت موتور سیکلت ارزان قیمت فروشگاه و سایت قیمت و خرید کلاه ایمنی موتور سیکلت خرید کلاه کاسکت موتور سیکلت سایت اینترنتی و انلاین کلاه کاسکت


Автор: کلاه کاسکت (не зарегистрирован), дата: 1 июня, 2023 - 04:59
#permalink

کلاه کاسکت فروشگاه قیمت و خرید کلاه ایمنی موتور سیکلت بهترین کلاه کاسکت ازران قیمت وسپایی کراسی و کلاه کاسکت فک متحرک قیمت و خرید از نمایندگی و فروشگاه
کلاه کاسکت فروشگاه قیمت و خرید کلاه ایمنی موتور سیکلت
لوازم موتور سواری ارزان قیمت تهران و کلاه موتور سیکلت خرید کلاه کاسکت کلاه کاسکت لوازم موتور وسپایی راپیدو و ردلاین سایت و نمایندگی کلاه کاسکت فک متحرک تهران و بهترین قیمت ایران بهترین فروشگاه لوازم موتورسیکلت بهترین نمایندگی و فروشگاه کلاه کاسکت وسپایی عینک دار قطعات موتور سیکلت ارزان قیمت و کلاه کاسکت کراسی و بدون فک کلاه وسپا اصل و عینک کراسی بهترین کلاه کاسکت موتور سیکلت ارزان قیمت فروشگاه و سایت قیمت و خرید کلاه ایمنی موتور سیکلت خرید کلاه کاسکت موتور سیکلت سایت اینترنتی و انلاین کلاه کاسکت


Автор: کلاه کاسکت (не зарегистрирован), дата: 1 июня, 2023 - 05:00
#permalink

کلاه کاسکت فروشگاه قیمت و خرید کلاه ایمنی موتور سیکلت بهترین کلاه کاسکت کلاه کاسکت ازران قیمت وسپایی کراسی و کلاه کاسکت فک متحرک قیمت و خرید از نمایندگی و فروشگاه
کلاه کاسکت فروشگاه قیمت و خرید کلاه ایمنی موتور سیکلت
لوازم موتور سواری ارزان قیمت تهران و کلاه موتور سیکلت خرید کلاه کاسکت وسپایی راپیدو و ردلاین سایت و نمایندگی کلاه کاسکت فک متحرک تهران و بهترین قیمت ایران بهترین فروشگاه لوازم موتورسیکلت بهترین نمایندگی و فروشگاه کلاه کاسکت وسپایی عینک دار قطعات موتور سیکلت ارزان قیمت و کلاه کاسکت کراسی و بدون فک کلاه وسپا اصل و عینک کراسی بهترین کلاه کاسکت موتور سیکلت ارزان قیمت فروشگاه و سایت قیمت و خرید کلاه ایمنی موتور سیکلت خرید کلاه کاسکت موتور سیکلت سایت اینترنتی و انلاین کلاه کاسکت


Автор: sina (не зарегистрирован), дата: 2 июня, 2023 - 15:28
#permalink

Your article was very good and useful. Thank you for your wonderful website.
https://jakharid.ir/
https://jakharid.ir/swamp-coolers/


Автор: ufax53 (не зарегистрирован), дата: 11 июня, 2023 - 11:20
#permalink

This blog post is really great; the standard stuff of the post is genuinely amazing.
[ สล็อตออนไลน์ ][ สล็อต ] [ เว็บเล่นสล็อตออนไลน์ ] [ เว็บเล่นสล็อต ]


Автор: on_in (не зарегистрирован), дата: 15 июня, 2023 - 11:47
#permalink

This article is very good and helpful to me. Hope you will share my content too.
[ https://shorturl.asia/b4N98 ]
https://shorturl.asia/lhMxf ]
https://shorturl.asia/0TPYg ]
https://shorturl.asia/5pcSt ]


Автор: renoone (не зарегистрирован), дата: 25 июня, 2023 - 13:40
#permalink

Export consulting to Russia means teaching tips and techniques that can help you make significant progress. Russia as one of the business partners in recent years has been able to provide numerous business opportunities for Iranians. Pazyrik business consulting in the field of export, by introducing the rules and checking the most detailed information, predicts and displays a successful and profitable export route map for exporters.
buying a house in russia
company registration in russia.

One of the most important reasons for the failure of the Megane gearbox is the use of low-quality oils in the gearbox. Changing Megan gearbox oil too late, using unreliable brands and changing oil by unscrupulous people can lead to gearbox failure. That's why it is very important to go to Megan's specialized repair shop. Professional repairmen know very well that they should drain all the dirty oil and replace it with new oil.
Megane gearbox repair
Renult repairshope in tehran

Kazan University of Medical Sciences was founded by Emperor Alexander I in 1804 in the center of Kazan city. Today, this university is considered one of the most prestigious universities in the world with 4000 foreign students from 90 countries. Kazan Federal University (KFU) is one of the top 500 universities in the world, which was identified in the 2021 QS ranking. In this ranking, Kazan University ranks 400 in the world in mathematics and physics, and in the field of linguistics, it is among the top 200 universities in the world!!

It is interesting to know that Kazan University of Russia has won the maximum points in facilities (5 stars). Studying at Kazan Federal University is the dream of every student who wants to get a degree from the best university in the world! This university has the highest educational and scientific level and the world's highest scientific standards are implemented in it, and the university's global ranking is below the top 400 universities in the world. study in russia

To buy cheap Russian wood, you can pay attention to second-hand Russian wood. Definitely, the type of wood is also effective in its price. The price of Nerad wood is different from the price of sycamore wood or the price of second-hand wooden boards. RUSSWOOD company imports the best Russian wood directly from Russia to Iran at an economical and affordable price all year round. You can contact the consultants of this company for purchase or advice.


Автор: Гость (не зарегистрирован), дата: 18 июля, 2023 - 13:03
#permalink

Я думаю ты прав Fumigaciones Precios


Автор: Weather today (не зарегистрирован), дата: 1 июля, 2023 - 14:36
#permalink
<a href="https://whatweather.today/">Weather</a>

Автор: Weather today (не зарегистрирован), дата: 1 июля, 2023 - 14:37
#permalink


Автор: спасибо (не зарегистрирован), дата: 3 июля, 2023 - 08:54
#permalink

کدام بانک برای وام ازدواج باز است؟

در واقع بانک‌های ملت، رفاه کارگران، مسکن، سپه، کشاورزی، ملی ایران، تجارت، صادرات ایران، پست بانک ایران، پارسیان، سامان، قرض الحسنه مهر ایران، گردشگری، دی، قرض الحسنه رسالت، کارآفرین، توسعه تعاون، ایران زمین، پاسارگاد، آینده، اقتصاد نوین، موسسه اعتباری ملل، شهر، سینا، موسسه اعتباری نور، توسعه صادرات، متشرک ایران و ونزوئلا، خاورمیانه، سرمایه بانک هایی هستند که به متقاضیات دریافت وام ازدواج تسهیلات موردنظر را پرداخت می‌کنند و به صورت دوره ای و روزانه تعدادی از آن‌ها در سامانه وام ازدواج فعال شده و تعدادی را ثبت نام کرده و مجدد غیرفعال شده تا بتوانند تسهیلات را پرداخت کرده و با صف خلوت تری در سامانه فعال شوند، روند فعالیت بانک‌ها ممکن است برای بسیاری از افراد آزار دهنده باشد از این رو ثبت نام وام ازدواج را می‌توان از طریق سایت vamezdevaj.site نیز انجام داد که به متقاضیان کمک می‌کند تا در جهت تسریع این روند با استفاده از این سامانه اقدام کنند، همچنین از طریق صفحه با همین عنوان

کدام بانک برای وام ازدواج باز است؟ می‌توان به صورت روزانه بانک‌هایی که در استانتان فعالیت داشته اند را ببینید.


Автор: спасибо (не зарегистрирован), дата: 3 июля, 2023 - 08:54
#permalink

کدام بانک برای وام ازدواج باز است؟

در واقع بانک‌های ملت، رفاه کارگران، مسکن، سپه، کشاورزی، ملی ایران، تجارت، صادرات ایران، پست بانک ایران، پارسیان، سامان، قرض الحسنه مهر ایران، گردشگری، دی، قرض الحسنه رسالت، کارآفرین، توسعه تعاون، ایران زمین، پاسارگاد، آینده، اقتصاد نوین، موسسه اعتباری ملل، شهر، سینا، موسسه اعتباری نور، توسعه صادرات، متشرک ایران و ونزوئلا، خاورمیانه، سرمایه بانک هایی هستند که به متقاضیات دریافت وام ازدواج تسهیلات موردنظر را پرداخت می‌کنند و به صورت دوره ای و روزانه تعدادی از آن‌ها در سامانه وام ازدواج فعال شده و تعدادی را ثبت نام کرده و مجدد غیرفعال شده تا بتوانند تسهیلات را پرداخت کرده و با صف خلوت تری در سامانه فعال شوند، روند فعالیت بانک‌ها ممکن است برای بسیاری از افراد آزار دهنده باشد از این رو ثبت نام وام ازدواج را می‌توان از طریق سایت vamezdevaj.site نیز انجام داد که به متقاضیان کمک می‌کند تا در جهت تسریع این روند با استفاده از این سامانه اقدام کنند، همچنین از طریق صفحه با همین عنوان

کدام بانک برای وام ازدواج باز است؟ می‌توان به صورت روزانه بانک‌هایی که در استانتان فعالیت داشته اند را ببینید.


Автор: Гость (не зарегистрирован), дата: 3 июля, 2023 - 12:48
#permalink

В объектно-ориентированных языках программирования, таких как Java, C++, C#, Python и других, "this" относится к текущему экземпляру объекта autistic test


Автор: 토토사이트 (не зарегистрирован), дата: 10 июля, 2023 - 06:56
#permalink

I have been checking out some of your stories and i can state pretty nice stuff. I will surely bookmark your site. (: 토토사이트


Автор: 먹튀검증 (не зарегистрирован), дата: 10 июля, 2023 - 06:57
#permalink

This is such a nice post. Thanks for sharing such valuable features and other relevant information. 먹튀검증


Автор: 메이저사이트 (не зарегистрирован), дата: 10 июля, 2023 - 06:57
#permalink

You definitely know what youre talking about, why throw away your intelligence on just posting videos to your weblog when you could be giving us something informative to read? (: 메이저사이트


Автор: 토토사이트 추천 (не зарегистрирован), дата: 10 июля, 2023 - 06:57
#permalink

The other day, while I was at work, my sister stole my iPad and tested to see if it can survive a 40 foot drop, just so she can be a youtube sensation. (: 토토사이트 추천


Автор: Гость (не зарегистрирован), дата: 18 июля, 2023 - 13:01
#permalink

I´m so happy I found this space with great content. Thanks
Mantención Aire Acondicionado Anwo


Автор: 메이저사이트 (не зарегистрирован), дата: 19 июля, 2023 - 09:38
#permalink

This is my first visit to your blog and I am interested in the articles you provide Provide me with enough knowledge Thank you for sharing useful information Don't forget to keep sharing useful information 메이저사이트


Автор: 검증사이트 (не зарегистрирован), дата: 19 июля, 2023 - 09:38
#permalink

I'll bookmark your blog and get a synopsis... I'm glad to find so much useful information in this post we need to develop more technology in this area thanks for sharing 검증사이트


Автор: hamsite (не зарегистрирован), дата: 1 августа, 2023 - 13:23
#permalink

بسیار عالی بود جناب.آژانس دیجیتال مارکتینگ هم سایت خدمات افزایش سابسکرایب در یوتیوب ارائه میدهد.شما میتوانید از خدمات ما استفاده کنید


Автор: Buy Server from Q9Telecom in dubai (uae) (не зарегистрирован), дата: 2 августа, 2023 - 13:32
#permalink

It was a very good article.I am grateful to you. Thank you for helping me


Автор: Q9Telecom Storage in dubai (uae) (не зарегистрирован), дата: 2 августа, 2023 - 13:34
#permalink

It was a very good article.I am grateful to you. Thanks


Автор: Гость (не зарегистрирован), дата: 4 августа, 2023 - 09:10
#permalink

Wow, that’s really unexpected information I’m looking forward to the next one. Games Kharido


Автор: 188BET (не зарегистрирован), дата: 21 августа, 2023 - 10:14
#permalink

You must have read my article like I came to read your are.[188BET][188BETโบนัส]


Автор: http://setadiran.ir/ (не зарегистрирован), дата: 3 сентября, 2023 - 19:56
#permalink

I read a reliable and high-quality article. Thanks for your website.


Автор: 토토사이트 (не зарегистрирован), дата: 24 сентября, 2023 - 09:38
#permalink

I can tell you are an expert in your field! I am launching a website soon and your information will be very useful to me. Thank you for all your help and wish you a prosperous business.토토사이트


Автор: Гость (не зарегистрирован), дата: 5 октября, 2023 - 16:42
#permalink

Автор: Гость (не зарегистрирован), дата: 5 октября, 2023 - 16:45
#permalink

Автор: Гость (не зарегистрирован), дата: 5 октября, 2023 - 16:46
#permalink

Автор: Гость (не зарегистрирован), дата: 5 октября, 2023 - 16:46
#permalink

Автор: UFAX53 (не зарегистрирован), дата: 7 октября, 2023 - 11:34
#permalink

Автор: สล็อตpg 2023 (не зарегистрирован), дата: 2 ноября, 2023 - 10:19
#permalink

people play the most. We have developed the system well. สล็อตpg 2023


Автор: pg slot เว็บตรง อันดับ 1 (не зарегистрирован), дата: 2 ноября, 2023 - 10:19
#permalink

pg slot games feel to their web based gaming experience. and get the money if you use time to play on this website. pg slot เว็บตรง อันดับ 1


Автор: ทดลองเล่นสล็อต (не зарегистрирован), дата: 2 ноября, 2023 - 10:20
#permalink

If you are having a hard time deciding between providers, check out the bonuses they offer. The best online casino. ทดลองเล่นสล็อต


Автор: pg demo (не зарегистрирован), дата: 2 ноября, 2023 - 10:20
#permalink

There are free credits and full slot demo game promotions. There are many games to choose from. pg demo


Автор: ทดลอง เล่น สล็อต ฟรี (не зарегистрирован), дата: 2 ноября, 2023 - 10:21
#permalink

I like the valuable information you provide in your articles. comes with online slots games. The strongest ทดลอง เล่น สล็อต ฟรี


Автор: ทดลองเล่นสล็อต (не зарегистрирован), дата: 2 ноября, 2023 - 10:21
#permalink

I like the valuable information you provide in your articles. comes with online slots games. The strongest ทดลองเล่นสล็อต


Автор: jonobsoft (не зарегистрирован), дата: 9 ноября, 2023 - 11:14
#permalink

کدام بانک برای وام ازدواج باز است؟

در واقع بانک‌های ملت، رفاه کارگران، مسکن، سپه، کشاورزی، ملی ایران، تجارت، صادرات ایران، پست بانک ایران، پارسیان، سامان، قرض الحسنه مهر ایران، گردشگری، دی، قرض الحسنه رسالت، کارآفرین، توسعه تعاون، ایران زمین، پاسارگاد، آینده، اقتصاد نوین، موسسه اعتباری ملل، شهر، سینا، موسسه اعتباری نور، توسعه صادرات، متشرک ایران و ونزوئلا، خاورمیانه، سرمایه بانک هایی هستند که به متقاضیات دریافت وام ازدواج تسهیلات موردنظر را پرداخت می‌کنند و به صورت دوره ای و روزانه تعدادی از آن‌ها در سامانه وام ازدواج فعال شده و تعدادی را ثبت نام کرده و مجدد غیرفعال شده تا بتوانند تسهیلات را پرداخت کرده و با صف خلوت تری در سامانه فعال شوند، روند فعالیت بانک‌ها ممکن است برای بسیاری از افراد آزار دهنده باشد از این رو ثبت نام وام ازدواج را می‌توان از طریق سایت jonobsoft.ir نیز انجام داد که به متقاضیان کمک می‌کند تا در جهت تسریع این روند با استفاده از این سامانه اقدام کنند، همچنین از طریق صفحه با همین عنوان

کدام بانک برای وام ازدواج باز است؟ می‌توان به صورت روزانه بانک‌هایی که در استانتان فعالیت داشته اند را ببینید.


Автор: nisafitri (не зарегистрирован), дата: 14 января, 2024 - 17:47
#permalink

In ending this journey, we can conclude that samarinda cit and ngobrol games. is not just a technical problem in the world of online gaming. This is a serious challenge involving social, economic and ethical aspects. With awareness, cooperation and collective action, we can maintain the integrity of online gaming and ensure every player can enjoy a fair and enjoyable gaming experience.


Автор: tehradio (не зарегистрирован), дата: 20 января, 2024 - 09:39
#permalink

wow such a good post thanks a lot its really usefull
tehradio.com
دانلود آهنگ جدید


Автор: امیر سلمانی (не зарегистрирован), дата: 21 января, 2024 - 23:14
#permalink

nice post
تاتو


Автор: امیر سلمانی (не зарегистрирован), дата: 21 января, 2024 - 23:15
#permalink

nice post


Автор: امیر سلمانی (не зарегистрирован), дата: 21 января, 2024 - 23:16
#permalink

Автор: botmusic (не зарегистрирован), дата: 6 февраля, 2024 - 04:28
#permalink

Consistency is key: Strike a balance between staying top-of-mind and avoiding email fatigue by sending valuable content regularly without overwhelming your audience.


Автор: فیلترشکن قوی (не зарегистрирован), дата: 16 февраля, 2024 - 16:27
#permalink

Автор: ربات تلگرام (не зарегистрирован), дата: 16 февраля, 2024 - 16:37
#permalink

Автор: ufa168 (не зарегистрирован), дата: 16 февраля, 2024 - 19:10
#permalink

Your post is very helpful and information is reliable. I am satisfied with your post. Thank you so much for sharing this wonderful post. If you have any assignment requirement then you are at the right place. ufa168


Автор: ติดต่อหวยมาเลย์ (не зарегистрирован), дата: 15 марта, 2024 - 09:14
#permalink

Thank you for writing this story for us to read for the first time. I find it very useful. Glad you found it.


Отправить комментарий

Приветствуются комментарии:
  • Полезные.
  • Дополняющие прочитанное.
  • Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены.
    Для остальных вопросов и обсуждений есть форум.
P.S. Лучшее "спасибо" - не комментарий, как все здорово, а рекомендация или ссылка на статью.
Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешены HTML-таги: <strike> <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <u> <i> <b> <pre> <img> <abbr> <blockquote> <h1> <h2> <h3> <h4> <h5> <p> <div> <span> <sub> <sup>
  • Строки и параграфы переносятся автоматически.
  • Текстовые смайлы будут заменены на графические.

Подробнее о форматировании

CAPTCHA
Антиспам
5 + 4 =
Введите результат. Например, для 1+3, введите 4.
 
Текущий раздел
Поиск по сайту
Содержание

Учебник javascript

Основные элементы языка

Сундучок с инструментами

Интерфейсы

Все об AJAX

Оптимизация

Разное

Дерево всех статей

Последние комментарии
Последние темы на форуме
Forum