Jump to content
  • 0

область видимости переменных в JS


tonik_spb
 Share

Question

стало что то очень интересно как же это реализовать =))

есть код :

<script>
function s0(text){
this.text = text;
alert('0 =>'+this.text);
ss.os = function(){
alert('1 =>'+this.text);
this.text = "edit";
}
ss.os();
alert('2 =>'+this.text);
}
function start(){var p = new s0('text');}
</script>
<body onload=start()>
</body>

в результате чего мы не получим желанного результата, ну это и правильно ведь os у нас просто функция, она к нашему объекту не как не относится, если бы мы объявии бы os как метод объекта s0 (this.s0 = function()), то да мы получили нужный результат.

Проблема как раз в том что мы не можем создовать метод объекта через идентификатор this. Вопрос в следующем: "как можно добраться до свойств объекта s0, при этом не создовая не каких новых копий объекта, тоесть в функции start у нас один раз создался объект с ним и работаем".

что то как то тяжко мне додуматься, может просто очередной тупняк.

мысли вслух:

возьмем и будем работать только с парраметром конструктора

<script>
function s0(text){
alert('0 =>'+text);
var ss = {};
ss.os = function(){
alert('1 =>'+text);
text = "edit";
}
ss.os();
alert('2 =>'+text);

}
function start(){var p = new s0('text');}
</script>

в результате нам удалось изменить переменную, и вроде бы все мы добились чего хотели но увы......

Все это хотелось реализовать в функции типа

function Ajax(url){
this.path = "http://localhost/";
this.url = this.path+url;
var text;
var HTTP = this.GetAJAXLoader(); // возвращает нужный объект для работы с XmlHTTP
HTTP.onreadystatechange = function() {
if (HTTP.readyState==4){
if (HTTP.status == 200){
text = HTTP.responseText;
}
}
}
HTTP.open("GET",this.url,true);
HTTP.send(null);
alert(text);
}

поидеи все также как и примером выше, но это только работает в IE Mozila выдает что переменная text undefined.

Edited by tonik_spb
Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 0

не.... это еще один вариант решения проблемы когда мы сами создаем метод и сами его вызываем......

но я же в конце поста все привел к этому коду (предыдущий был только аналог)

function Ajax(url){
this.path = "http://localhost/";
this.url = this.path+url;
var text;
var HTTP = this.GetAJAXLoader(); // возвращает нужный объект для работы с XmlHTTP
HTTP.onreadystatechange = function() {
if (HTTP.readyState==4){
if (HTTP.status == 200){
text = HTTP.responseText;
}
}
}
HTTP.open("GET",this.url,true);
HTTP.send(null);
alert(text);
}

свойству onreadystatechange мы не можем задать ссылку на функция с параметрами потому что она сама вызывается при обращении к методу send (при этом вызывается несколько раз в процессе всей отправки и получении данных), а вызывается она без каких то параметров =\

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy