Сборка от 17 марта 2017 г



Download 9,9 Mb.
bet161/349
Sana26.04.2022
Hajmi9,9 Mb.
#582433
TuriУчебник
1   ...   157   158   159   160   161   162   163   164   ...   349
Bog'liq
ilja kantor sovremennyj uchebnik-1chast PdfToWord

With + функция


важность: 5
Какая из функций будет вызвана?

function f() { alert(1)


}

var obj = {


f: function() { alert(2)
}
};

with(obj) { f();


}

К решению





With + переменные


важность: 5

Что выведет этот код?


var a = 1;


var obj = { b: 2


};

with(obj) { var b;


alert( a + b );
}

К решению


Методы объектов и контекст вызова


Начинаем изучать объектно‑ориентированную разработку – как работают объекты и функции, что такое контекст вызова и способы его передачи.


Методы объектов, this


До этого мы говорили об объекте лишь как о хранилище значений. Теперь пойдём дальше и поговорим об объектах как о сущностях со своими функциями («методами»).




Методы у объектов


При объявлении объекта можно указать свойство‑функцию, например:


var user = {


name: 'Василий',
// метод
sayHi: function() { alert( 'Привет!' );
}


};
// Вызов user.sayHi();

Свойства‑функции называют «методами» объектов. Их можно добавлять и удалять в любой момент, в том числе и явным присваиванием:





Доступ к объекту через this


Для полноценной работы метод должен иметь доступ к данным объекта. В частности, вызов user.sayHi() может захотеть вывести имя пользователя.




Для доступа к текущему объекту из метода используется ключевое слово this .

Значением this является объект перед «точкой», в контексте которого вызван метод, например:


var user = {
name: 'Василий',

this.name


sayHi: function() { alert( );
}
};

user.sayHi(); // sayHi в контексте user


Здесь при выполнении функции user.sayHi() в this будет храниться ссылка на текущий объект user . Вместо this внутри sayHi можно было бы обратиться к объекту, используя переменную user :


...


user.name
sayHi: function() { alert( );
}
...

…Однако, такое решение нестабильно. Если мы решим скопировать объект в другую переменную, например admin = user , а в переменную user


записать что‑то другое – обращение будет совсем не по адресу:

var user = {


name: 'Василий',

user.name


sayHi: function() { alert(
); // приведёт к ошибке

}
};

var admin = user; user = null;


admin.sayHi(); // упс! внутри sayHi обращение по старому имени, ошибка!


Использование this гарантирует, что функция работает именно с тем объектом, в контексте которого вызвана.


Через this метод может не только обратиться к любому свойству объекта, но и передать куда‑то ссылку на сам объект целиком:


var user = {


name: 'Василий',
sayHi: function() {
showName(this); // передать текущий объект в showName
}
};

function showName(namedObj) { alert( namedObj.name );


}

user.sayHi(); // Василий





Download 9,9 Mb.

Do'stlaringiz bilan baham:
1   ...   157   158   159   160   161   162   163   164   ...   349




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish