Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.12.2014, 10:02
Аспирант
Отправить личное сообщение для borodatych Посмотреть профиль Найти все сообщения от borodatych
 
Регистрация: 03.02.2014
Сообщений: 40

Не понятное поведение создаваемого объекта
Доброго времени суток.

Возможно не правильно выбран подход...

В общем, код:
var Offline = function(){

    this._inst = false;
    this.version = false;
    this.url  = false;
    this.test = "31234wfs";

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

    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)
            href = url
        ;
        if( href ){
            dom = "<a href='"+ href +"'>"+ ankor +"</a>";
        }
        else{
            dom = "<span>"+ ankor +"</span>";
        }
        return dom;
    };

};



Ожидания не оправдались...
Вот что в удалось вытянуть:

console.log( Offline );
function (){

    this._inst = false;
    this.version = false;
    this.url  = false;
    this.test = "31234wfs";

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

    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)
            href = url
        ;
        if( href ){
            dom = "<a href='"+ href +"'>"+ ankor +"</a>";
        }
        else{
            dom = "<span>"+ ankor +"</span>";
        }
        return dom;
    };

}


console.log( Offline.test );
undefined


console.log( Offline.Instance.test );
Uncaught TypeError: Cannot read property 'test' of undefined


Где допустил ошибку? ..вроде все логично..
Ответить с цитированием
  #2 (permalink)  
Старый 07.12.2014, 10:06
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от borodatych
Где допустил ошибку? ..вроде все логично..
Объясни логику, которую ты тут видишь. Поподробней.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #3 (permalink)  
Старый 07.12.2014, 10:43
Аспирант
Отправить личное сообщение для borodatych Посмотреть профиль Найти все сообщения от borodatych
 
Регистрация: 03.02.2014
Сообщений: 40

Я должен работать с Offline как с объектом.

Код написан по аналогии работающего примера, возможно я не все захватил с того примера, но не знаю что, вот и просил
Ответить с цитированием
  #4 (permalink)  
Старый 07.12.2014, 11:24
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от borodatych
Я должен работать с Offline как с объектом.
Ну так работай. В javascript функция является объектом.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #5 (permalink)  
Старый 07.12.2014, 11:25
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Задай конкретный вопрос что ты не можешь понять.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #6 (permalink)  
Старый 07.12.2014, 11:50
Аспирант
Отправить личное сообщение для borodatych Посмотреть профиль Найти все сообщения от borodatych
 
Регистрация: 03.02.2014
Сообщений: 40

Offline.test должно вернуть 31234wfs, а не undefined
Почему же оно возвращает undefined?
Ответить с цитированием
  #7 (permalink)  
Старый 07.12.2014, 12:17
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от borodatych
Offline.test должно вернуть 31234wfs, а не undefined
Не должно. С чего бы. Вот твой пример, упрощенный:

function Apple() {
    this.color = 'green';
}

Apple.color // undefined
var apple = new Apple();
apple.color // green


Ты не понимаешь почему так происходит - бегом учить основы. Что такое функция, что такое конструктор и т.д.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #8 (permalink)  
Старый 07.12.2014, 12:38
Аспирант
Отправить личное сообщение для borodatych Посмотреть профиль Найти все сообщения от borodatych
 
Регистрация: 03.02.2014
Сообщений: 40

Я просто запутался...

Вот это:
var Instance = function() {
    if (this._instance) return this._instance;
    return this._instance = new this;
};

var Apple = function(){
    this.color = "green";
};

Apple.Instance = Instance;

Apple.Instance.color


Должно же отдать green, а не undefined ??!
Ответить с цитированием
  #9 (permalink)  
Старый 07.12.2014, 12:41
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Иди читай что такое функция.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #10 (permalink)  
Старый 07.12.2014, 12:42
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

И как ее вызвать. Где у тебя вызов функции Instance?
__________________
В личку только с интересными предложениями
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поведение DOM объекта igory Events/DOM/Window 2 13.08.2014 11:20
Объект JS не понятное поведение или как повесить обработчик внутри объекта Arnowt Events/DOM/Window 7 29.06.2014 19:00
Не понятное поведение при копирование массива cyber Events/DOM/Window 32 19.12.2012 10:38
Странное поведение объекта в 2D Flirer Общие вопросы Javascript 5 26.03.2011 10:16
Можно ли получить имя экземпляра объекта внутри самого объекта? Ichigeki Общие вопросы Javascript 9 14.11.2008 19:00