Цикл по объекту «функция» в JavaScript - PullRequest
0 голосов
/ 14 февраля 2012

У меня есть этот проект, в котором я хотел бы объединить объект «функция» (в отличие от объекта JSON - литерал объекта) с существующим объектом. Я хотел бы получить "публично видимые" свойства. однако, когда я делаю цикл для , они не отображаются. они не вызывают console.log() внутри. как мне их получить?

//obj passed to extend() by external caller
//this is what obj it looked like when i console.log()'ed it
obj = function() {

    //skip these private ones
    var imPrivate = 'i should not be included';
    function imGetter() {}

    //i want these guys below:
    this.getter = imGetter;
    this.imPublic = "i should be included";

}

function extend(obj){
    console.log('i can see here');

    for (var key in obj) {
        console.log('you cannot see here');
    }​

    //...more of our code here
}

Ответы [ 2 ]

4 голосов
/ 14 февраля 2012

Эти свойства не существуют, пока вы не вызовете функцию.

Как только вы var foo = new obj();, вы увидите свойства (на foo).

В качестве альтернативы, переместите код, который устанавливает свойства, таким образом, чтобы он был вне функции .

0 голосов
/ 14 февраля 2012

Вы можете сделать это самостоятельно:

var obj={};
(function(ns) { //skip these private ones   
    var imPrivate = 'i should not be included';

    function imGetter() {};
    //i want these guys below:  
    ns.getter = imGetter;
    ns.imPublic = "i should be included";
})(obj)
console.log('i can see here');
for (var key in obj) {
    console.log('you cannot see here '+key+" holds:"+obj[key]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...