В JavaScript, как я называю метод класса из другого метода в том же классе?

У меня есть это:

var Test = new function() {  
    this.init = new function() {  
        alert("hello");  
    }
    this.run = new function() {  
        // call init here  
    }  
}

Я хочу звонить init в рамках выполнения. Как я делаю это?

10
задан Jacob 10 February 2010 в 01:24
поделиться

3 ответа

Если вы хотите прочитать текст 500:

request = urllib2.Request(url, data, headers)
try:
        resp = urllib2.urlopen(request)
        print resp.read()
except urllib2.HTTPError, error:
        print "ERROR: ", error.read()

В вашем случае вам не нужно наращивать запрос. Просто сделайте

try:
        resp = urllib2.urlopen(url)
        print resp.read()
except urllib2.HTTPError, error:
        print "ERROR: ", error.read()

так, вы не переопределяете urllib2.HTTPError, вы просто обрабатываете исключение.

-121--866437-

У вас есть словарь, в котором несколько ключей сопоставляются с одним и тем же значением. Нет встроенной структуры данных, поддерживающей нужную операцию, но ее легко представить как Dictionary {последовательность, HashSet {string}} в .NET:

static void AddNames(Dictionary<string, HashSet<string>> map, params string[] names)
{
    for (int i = 0; i < names.Length; i++)
    {
        HashSet<string> value;
        if (!map.TryGetValue(names[i], out value))
        {
            value = new HashSet<string>();
            map.Add(names[i], value);
        }

        for (int j = 0; j < names.Length; j++)
        {
            value.Add(names[j]);
        }
    }
}

static void Main(string[] args)
{
    Dictionary<string, HashSet<string>> names = new Dictionary<string,HashSet<string>>();
    AddNames(names, "Chris", "Christopher");
    AddNames(names, "Christina", "Chrissy", "Chris");

    HashSet<string> relatedToChris = names["Chris"];                // gets "Chris", "Christina", "Chrissy", "Christopher";
    HashSet<string> namesRelatedToChristinia = names["Christina"];  // gets "Christina", "Chrissy", "Chris";
}

Вы можете представить свою структуру данных как направленный график, где каждый узел имеет ребро, связанное с его связанным именем. Так как есть n ^ 2 ребер, словарь требует O (n ^ 2) времени для вставки и памяти. Его невозможно сократить время поиска до чего-то лучшего.

К счастью, поскольку он реализован в виде словаря, поиск продолжается как O (1). Удалено O (m), где m - количество значений, связанных с ключом.

-121--3753593-

Используйте this.init () , но это не единственная проблема. Не вызывайте новые внутренние функции.

var Test = new function() {
    this.init = function() {
        alert("hello");
    };

    this.run = function() {
        // call init here
        this.init();
    };
}

Test.init();
Test.run();

// etc etc
7
ответ дан 3 December 2019 в 23:12
поделиться

В основном имеется словарь, в котором несколько ключей соответствуют одному и тому же значению. Нет встроенной структуры данных, поддерживающей нужную операцию, но ее легко представить как Dictionary {последовательность, HashSet {string}} в .NET:

static void AddNames(Dictionary<string, HashSet<string>> map, params string[] names)
{
    for (int i = 0; i < names.Length; i++)
    {
        HashSet<string> value;
        if (!map.TryGetValue(names[i], out value))
        {
            value = new HashSet<string>();
            map.Add(names[i], value);
        }

        for (int j = 0; j < names.Length; j++)
        {
            value.Add(names[j]);
        }
    }
}

static void Main(string[] args)
{
    Dictionary<string, HashSet<string>> names = new Dictionary<string,HashSet<string>>();
    AddNames(names, "Chris", "Christopher");
    AddNames(names, "Christina", "Chrissy", "Chris");

    HashSet<string> relatedToChris = names["Chris"];                // gets "Chris", "Christina", "Chrissy", "Christopher";
    HashSet<string> namesRelatedToChristinia = names["Christina"];  // gets "Christina", "Chrissy", "Chris";
}

Вы можете представить свою структуру данных как направленный график, где каждый узел имеет ребро, связанное с его связанным именем. Так как есть n ^ 2 ребер, словарь требует O (n ^ 2) времени для вставки и памяти. Его невозможно сократить время поиска до чего-то лучшего.

К счастью, поскольку он реализован в виде словаря, поиск продолжается как O (1). Удалено O (m), где m - количество значений, связанных с ключом.

-121--3753593-

Используйте this.init () , но это не единственная проблема. Не вызывайте новые внутренние функции.

var Test = new function() {
    this.init = function() {
        alert("hello");
    };

    this.run = function() {
        // call init here
        this.init();
    };
}

Test.init();
Test.run();

// etc etc
-121--3147222-
var Test = function() {
    this.init = function() {
        alert("hello");
    } 
    this.run = function() {
        this.init();
    }
}

Если я не пропущу что-то здесь, вы можете удалить «новый» из вашего кода.

1
ответ дан 3 December 2019 в 23:12
поделиться

Попробуйте,

 var Test =  function() { 
    this.init = function() { 
     alert("hello"); 
    }  
    this.run = function() { 
     // call init here 
     this.init(); 
    } 
} 

//creating a new instance of Test
var jj= new Test();
jj.run(); //will give an alert in your screen

Спасибо.

2
ответ дан 3 December 2019 в 23:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: