Muabala wa Object ya ECMAScript
- Maelezo ya kwanza Aina ya kiwango
- Maelezo ya kifo Ujumbe wa kilele au kiwango
作用域指的是变量的适用范围。
公用、私有和受保护作用域
概念
在传统的面向对象程序设计中,主要关注于公用和私有作用域。公用作用域中的对象属性可以从对象外部访问,即开发者创建对象的实例后,就可使用它的公用属性。而私有作用域中的属性只能在对象内部访问,即对于外部世界来说,这些属性并不存在。这意味着如果类定义了私有属性和方法,则它的子类也不能访问这些属性和方法。
受保护作用域也是用于定义私有的属性和方法,只是这些属性和方法还能被其子类访问。
ECMAScript 只有公用作用域
对 ECMAScript 讨论上面这些作用域几乎毫无意义,因为 ECMAScript 中只存在一种作用域 - 公用作用域。ECMAScript 中的所有对象的所有属性和方法都是公用的。因此,定义自己的类和对象时,必须格外小心。记住,所有属性和方法默认都是公用的!
建议性的解决方法
许多开发者都在网上提出了有效的属性作用域模式,解决了 ECMAScript 的这种问题。
由于缺少私有作用域,开发者确定了一个规约,说明哪些属性和方法应该被看做私有的。这种规约规定在属性前后加下划线:
obj._color_ = "blue";
Hii la kwanza, properti ya color inaingia kwa uhusiano wa kizuri. Kwa ingawa, kifungu haitofikia kwamba properti inaingia kwa ukosema, hii inaangazia wakitechnology wengine kuwa wamaliza kufikiria properti hiyo kama ya kizuri.
Wenyeji wengi wana agadhi kutumia hifadhi ya kinaadili kwa kumieleza vipengele vya kinaadili, kama vile: obj._color.
Kinaadili cha eneo la maadili
Kinaadili cha eneo la maadili kinachotumika kinaadili na maadili inaweza kufikia kwa eneo moja kwa kila wakati. Kwenye Java, kikundi kinaweza kuwa na kiwango na maadili, bila kufanyia kiwango cha kinaadili cha kikundi cha kinaadili, kama vile kikundi java.net.URLEncoder, kufanya kwa msingi yake ya encode() ni method ya kinaadili.
ECMAScript haukuwa na eneo la maadili kinaadili
Kwa uadilifu, ECMAScript haukuwa na eneo la maadili kinaadili. Hata hivyo, itakuwa na kiwango cha kiwango na maadili kwa kuzingatia kufanya kwa msingi. Wote, kufanya kwa msingi ni function. Function ni kiwango, kiwango kinaweza kuwa na kiwango na maadili. Kama vile:
function sayHello() { alert("hello"); } sayHello.alternate = function() { alert("hi"); } sayHello(); // kichapwa 'hello' sayHello.alternate(); // kichapwa 'hi'
Hapa, method alternate() ina uwanja wa function sayHello. Inaweza kutumia kama function kinaadili kwa sayHello() kuichapwa 'hello', au kutumia sayHello.alternate() kuichapwa 'hi'. Nakala, alternate() ni method ya sayHello() katika eneo la maadili yake, haitakuwa method ya siku kinaadili.
Neno kikuu 'this'
Matumizi ya 'this'
Kwenye ECMAScript, moja ya majadiliano inayotumiwa sana ni matumizi ya neno kikuu 'this', ambao kina kuitwa katika mafululizo ya kiwango. Neno kikuu 'this' kina kumekadiriwa kwa kiwango cha mafululizo cha kiwango, kama vile:
var oCar = new Object; oCar.color = "red"; oCar.showColor = function() { alert(this.color); }; oCar.showColor(); // kichapwa 'red'
Kwenye maktaba hii, neno kikuu 'this' kina kuitwa katika method showColor() ya kiwango. Kwenye hili mazingira, 'this' ni oCar. Maktaba yafuatavyo ni ile yana uhusiano na maktaba yaliyopita:
var oCar = new Object; oCar.color = "red"; oCar.showColor = function() { alert(oCar.color); }; oCar.showColor(); // kichapwa 'red'
Sababu za kutumia 'this'
Kwa nini kutumia 'this'? Kwa sababu katika kuzinduka kiwango kina haujulikana kwa kuwa kina vitabu vingine vya msingi hawakubaliana na jina la kiwango. Tumia 'this', inaweza kutumia kikemia hata katika maeneo mengi. Mwakaona mifano inayofuata:
function showColor() { alert(this.color); }; var oCar1 = new Object; oCar1.color = "red"; oCar1.showColor = showColor; var oCar2 = new Object; oCar2.color = "blue"; oCar2.showColor = showColor; oCar1.showColor(); //ionyesha 'red' oCar2.showColor(); //ionyesha 'blue'
Kwenye programu ya juu, kwanza tumetumia this kumtaarifu programu ya showColor(), kisha tumepata mbali mbali wengine (oCar1 na oCar2), mbali mbali wengine wana ujumbe wa kilele unaotumika kama 'red', na mbali mbali wengine wana ujumbe wa kilele unaotumika kama 'blue'. Mbali mbali wengine wamepata ujumbe wa kilele kwa sababu kama unaenda kutumia oCar1.showColor(), herufi ya this kwenye programu inatufikia kama oCar1. Kama unaenda kutumia oCar2.showColor(), herufi ya this kwenye programu inatufikia kama oCar2.
Kweli, kama unaenda kumtaarifu ujumbe wa kiwango cha kiwango, lazima tumetumie herufi ya this. Kwa mfano, kama unaenda kutumia programu zifuatazo, method ya showColor() haikufunguliwa:
function showColor() { alert(color); };
Ikiwa hatutumia kiwango au herufi ya this kufikiria muasi, ECMAScript itakuchukua kama muasi wa kina au muasi wa kikuu. Kisha programu hiyo itafikia muasi wa kina au muasi wa kikuu yenye jina la 'color', lakini itakaposha. Nini ni matokeo? Programu itakionyesha 'null' kwenye uharibifu.
- Maelezo ya kwanza Aina ya kiwango
- Maelezo ya kifo Ujumbe wa kilele au kiwango