PDA

View Full Version : متد this در javascript



samuel
پنج شنبه 20 خرداد 1389, 17:03 عصر
از کد نویسای عزیز سوالی داشتم وامیدوارم توی این تالار به نتیجه ای برسم.سوال به این شرح:



<script type="text/javascript">
//<![CDATA[
function MyConstructor() {
var anotherVar = 'another value';
this.someval = 'some value';
}

var mObj = new MyConstructor();
alert(myObj.someval);
//]]>
</script>
در قطعه کد بالا " this " چه معنا و کاربردی دارد؟؟؟ و چرا باید از آن استفاده شود؟؟؟

از لطف بی منت شما یه دنیا ممنونم.

eshpilen
پنج شنبه 20 خرداد 1389, 21:26 عصر
خب فکر میکنم با اغماض احتمالی میشه گفت این یه روش ساخت آبجکت در جاوااسکریپت باشه.
قبلا یه چیزایی در اینمورد خونده بودم.
کلا Javascript (یا درکل همون ECMA Script) یکی از اون زبانهایی هست که چیزای جالبی داره و ساختار و منطقش با بیشتر زبانهای دیگه فرق میکنه. این ساختار و منطق چون در زبانهای دیگه نیست برای آدم غریب بنظر میاد.

eAmin
پنج شنبه 20 خرداد 1389, 22:01 عصر
از کد نویسای عزیز سوالی داشتم وامیدوارم توی این تالار به نتیجه ای برسم.سوال به این شرح:



<script type="text/javascript">
//<![CDATA[
function MyConstructor() {
var anotherVar = 'another value';
this.someval = 'some value';
}

var mObj = new MyConstructor();
alert(myObj.someval);
//]]>
</script>
در قطعه کد بالا " this " چه معنا و کاربردی دارد؟؟؟ و چرا باید از آن استفاده شود؟؟؟

از لطف بی منت شما یه دنیا ممنونم.



سلام

متد this يك اشاره گر است و در كد بالا، كلمه كليدي this به MyConstructor اشاره مي كنه و در كد مذبور يك property براي شي ايجاد مي كنه.
كد بالا رو مي تونيد به اين صورت هم بنويسيد:

function MyConstructor() {
//do somthings
};

//set property
MyConstructor.someval = 'some value';

موفق باشيد.

exlord
جمعه 28 خرداد 1389, 20:55 عصر
اگه با کد نویسی oop آشنا باشی .......
MyConstructor یه کلاسه و someval یه property از این کلاس .......
this.someval معادل این کد تو c# است ....

public object someval { get; set; }
و anotherval هم معادل اینه ...

private string anotherval;

exlord
جمعه 28 خرداد 1389, 21:03 عصر
var myClass = function () {
var myField = 1 ; // ye field ke az kharej az myclass gabele dastresi nist
this.myProperty = 2; // ye property ke az objecti az noe myClass gabele dastresie
}

var myObject = new myClass();
var a = myObject.myProperty; // a = 2;
var b = myObject.myField; // b = undefined yani tarif nashode

samuel
شنبه 29 خرداد 1389, 09:42 صبح
Exlord:
بی نهایت ممنون ، توضیح کارامدی بود.

اما یه سوال: آیا از متد استفاده می کنیم برای اینکه متغیر خارج از تابع قابل دسترسی باشه ؟ یا با استفاده از متد خصلتی رو به شی نسبت می دیم و بعدا مکررا از اون استفاده می کنیم؟ و یا هر دو؟

exlord
یک شنبه 30 خرداد 1389, 08:55 صبح
Exlord:
بی نهایت ممنون ، توضیح کارامدی بود.

اما یه سوال: آیا از متد استفاده می کنیم برای اینکه متغیر خارج از تابع قابل دسترسی باشه ؟ یا با استفاده از متد خصلتی رو به شی نسبت می دیم و بعدا مکررا از اون استفاده می کنیم؟ و یا هر دو؟

من سوالتو دقیقا متوجه نشدم ..... ظاهرا با OOP زیاد آشنا نیستی .... یه مثال واضهتر مینویسم ساید ابهامات برطرف بشه .....

var Tab = function () {
this.Index;
this.Name;
this.Value;
.
.
.
}
var TabControl = function () {
this.Tabs = new Array();
this.AddTab = function(){
this.Tabs.push(new Tab());
};

.
.
.
}

var myTabcon = new TabControl();
myTabcon.AddTab();
myTabcon.Tabs[0].Name = 'Tab Page 1';