JavaScript: получить экземпляры объекта, содержащие расширенные переменные - PullRequest
0 голосов
/ 04 сентября 2010

Итак, скажем, у меня был следующий скрипт:

var hey = {
    foo: 1,
    bar: 2,
    baz: 3,
    init: function(newFoo){
        this.foo = newFoo;
        return this;
    }
}
hey.check = function(){
    alert('yeah, new function');
}

Обычно я могу вызвать new hey.init(999) и получить новую переменную hey с hey.foo, установленным на 999. Но когда я это сделаю, hey.init(999).check() больше не будет определен. Есть ли способ имитировать сценарий, но позволить новым hey иметь расширенные переменные / функции?

РЕДАКТИРОВАТЬ: изменено hey.check() на hey.init(999).check() прости за это ...

Ответы [ 2 ]

2 голосов
/ 04 сентября 2010

На самом деле вы получаете не новый экземпляр hey, а экземпляр hey.init, который содержит только свойство foo.

Я думаю, вы пытаетесь это сделать

var hey =function() {
    this.foo = 1;
    this.bar = 2;
    this.baz = 3;
    this.init = function(newFoo){
        this.foo = newFoo;
    }
}
hey.check = function(){
    alert('yeah, new function');
}


//now instantiating our class, and creating an object:
var heyInstance=new hey();
heyInstance.init(999);
alert(heyInstance.foo);
0 голосов
/ 04 сентября 2010

у меня работает ...

Когда я вставляю

var hey = {
    foo: 1,
    bar: 2,
    baz: 3,
    init: function(newFoo){
        this.foo = newFoo;
        return this;
    }
}
hey.check = function(){
    alert('yeah, new function');
}
console.log(hey);
hey.init(22);
console.log(hey);
hey.check();

в консоль Firebug, я получаю предупреждение от hey.check();, и второй журнал показывает объект, где foo == 22.

Что не работает на вашем конце?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...