Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Не понятное поведение создаваемого объекта (https://javascript.ru/forum/misc/52182-ne-ponyatnoe-povedenie-sozdavaemogo-obekta.html)

danik.js 07.12.2014 12:43

У тебя Instance - функция, так? То есть подпрограмма.
Где в коде у тебя переход к исполнению подпрограммы?

Romaboy 07.12.2014 12:45

var Instance = function() {
    if (this._instance) return this._instance;
    return this._instance = new this;
};

Это функция, такая штуковина, котрая выполняет участок кода.
var Apple = function(){
this.color = "green";
};

Это тоже функция, которая выполняет код, а не содержит цвет.
Apple = {
  this.color: 'green'
}

Вот так и будет работать, только function убрать

danik.js 07.12.2014 12:45

Цитата:

Сообщение от borodatych
Apple.Instance.color


Должно же отдать green, а не undefined ??!

Ты походу еще и наркоман. Каким боком, у объекта, возьмется свойство, объявляемое вообще в другой функции? И причем объявляемое только при вызове этой функции и определяемое на контексте вызвова (this)?

borodatych 07.12.2014 12:58

Цитата:

Сообщение от danik.js
Где у тебя вызов функции Instance?

Премного благодарен, вот она моя рассеяность...

Apple.Instance().color


Цитата:

Сообщение от danik.js
Иди читай что такое функция.

Грубовато, как со школьником, но все равно признателен.

borodatych 07.12.2014 13:06

Про вторую то страницу и не заметил...

Цитата:

Сообщение от danik.js
Ты походу еще и наркоман.

Не угадали.

Цитата:

Сообщение от Romaboy
Вот так и будет работать, только function убрать

И вам спасибо за ответ.
Ваш вариант тоже имеет место быть, но мне было интересно почему мой не работал, мне он как то ближе

danik.js 07.12.2014 13:51

Цитата:

Сообщение от borodatych
Цитата:

Сообщение от danik.js
Ты походу еще и наркоман.

Не угадали.

Посыпаю голову пеплом :cray:
Цитата:

Сообщение от borodatych
вот она моя рассеяность

Теперь все прояснилось? Остался только вопрос - нахрена вся эта шняга? Чего пытаешься добиться этим извратом?

borodatych 07.12.2014 15:22

Добиваюсь подобия ООП.

В итоге:
var Offline = function(){

    this.version = false;
    this.url  = false;

    this.getUrl = function(url){
        switch( this.version ){
            case "02":
                this.url = url;
                break;
            //default: this.url = url;
        }
        return this.url;
    };

    this.getLink = function( url, ankor ){
        var dom,href = this.getUrl(url);
        if( href ){
            dom = "<a href='"+ href +"'>"+ ankor +"</a>";
        }
        else{
            dom = "<span>"+ ankor +"</span>";
        }
        return dom;
    };

};

Offline.Instance = Instance;
Offline.Instance().version  = GetParameter("version");


Instance и GetParameter реализованы в базовом файле.

В процессе:
var offline = '<?=$offline?>';
...
if( offline ){
    var url = offline+"&number="+num+"&detail="+detail;
    detAnalog += "<div id='"+ num +"'>"+ Offline.Instance().getLink( url, num ) +"</div>";
}else ...

danik.js 07.12.2014 21:12

То есть получается что тебе и не нужно чтобы Offline был функцией, так?
var Offline = {
    version: GetParameter("version"),
 
    getUrl: function(url){
        switch( this.version ){
            case "02":
                this.url = url;
                break;
            default: this.url = url;
        }
        return this.url;
    },
 
    getLink: function( url, ankor ){
        var dom,href = this.getUrl(url);
        if( href ){
            dom = "<a href='"+ href +"'>"+ ankor +"</a>";
        }
        else{
            dom = "<span>"+ ankor +"</span>";
        }
        return dom;
    }

};

Offline.getLink();


Возможно название объекта лучше написать с маленькой буквы. Хотя допустим встроенный объект Math пишут же с большой.
Непонятно только че делает getUrl. Полагаю что какую-то ненужную хуйню и его нужно выпилить.
Не ankor а anchor. Имена функций надо с маленькой буквы писать.

borodatych 08.12.2014 16:25

Цитата:

Не ankor а anchor
Благодарю за внимательность, с русским плохо.

Цитата:

Непонятно только че делает getUrl. Полагаю что какую-то ненужную хуйню и его нужно выпилить.
Тут я забыл закоментировать/удалить, поправил.

Цитата:

Имена функций надо с маленькой буквы писать.
Прислушался..

Цитата:

То есть получается что тебе и не нужно чтобы Offline был функцией, так?
Я тоже пришел к такому варианту, так как IE ругался на:
Offline.Instance = Instance;


danik.js, Вы мне достаточно помогли, вопрос можно закрыть.

Всем спасибо за уделенное внимание.

borodatych 08.12.2014 16:42

Хотя если кто объяснит существенную разницу между

var Offline = function(){

    this.version = false;
    this.url     = false;

    this.getUrl = function(url){
        switch( this.version ){
            case "02":
                this.url = url;
                break;
            //default: this.url = url;
        }
        return this.url;
    };

    this.getLink = function( url, anchor ){
        var dom,href = this.getUrl(url);
        if( href ){
            dom = "<a href='"+ href +"'>"+ anchor +"</a>";
        }
        else{
            dom = "<span>"+ anchor +"</span>";
        }
        return dom;
    };

};


И

var Offline = {

    version : false,
    url     : false,

    getUrl : function(url){
        switch( this.version ){
            case "02":
                this.url = url;
                break;
            //default: this.url = url;
        }
        return this.url;
    },

    getLink : function( url, anchor ){
        var dom,href = this.getUrl(url);
        if( href ){
            dom = "<a href='"+ href +"'>"+ anchor +"</a>";
        }
        else{
            dom = "<span>"+ anchor +"</span>";
        }
        return dom;
    }

};


Буду признателен... Для меня они идентичны.


Часовой пояс GMT +3, время: 20:20.