0
내가 구글 크롬에 대한 확장 일하고 있어요
을에 조회에 객체 참조를 잃고 나는 다음과 같은 상황에 달렸다 :자바 스크립트
내가 같은 모든 열린 창에서 기존의 모든 탭을 얻으려고 Google 크롬 인스턴스 나는 그 (것)들을 얻고 저를위한 관련 자료를 포함하는 목표의 배열을 건설한다.
console.log (나중에 사용하기 위해 저장 됨)를 사용하여 생성 된 배열을 보면 개체 컬렉션을 볼 수 있지만 참조 할 수는 없습니다 (정의되지 않은 경우).
컨테이너의 개체 외부에 배열을 저장하려고했지만 아무 것도 변경되지 않았습니다.
개체를 참조하려고 할 때 개체 참조가 사라지는 이유는 무엇입니까? 감사. 내가 코드의 논리가 잘못 생각
(function(window){
//defining a namespace
var example = {
bmarksmaster: (function() {
var bmarksmaster = function() {
return new bmarksmaster.fn.init();
}
bmarksmaster.fn = bmarksmaster.prototype = {
debug: false,
tabs: [],
constructor: bmarksmaster,
init: function() {
return this;
},
windowParser: function(ctx, filter) {
var local = ctx;
var filter = filter;
return function(wObj) {
if((wObj !== null) && (wObj !== undefined)) {
for(var idx in wObj) {
var cw = wObj[idx];
if((cw.tabs !== null) && (cw.tabs !== undefined)) {
var cwtabs = cw.tabs;
for(var tabIdx in cwtabs) {
local.tabs.push(filter(tabIdx, cwtabs[tabIdx]));
}
}
}
}
};
},
getTabs: function() {
var returnData = [];
chrome.windows.getAll(
{
"populate": true
}, this.windowParser(this, function(i, e) {
var data = {};
if(!e.incognito) {
data["title"] = e.title;
data['url'] = e.url;
data['favicon'] = e.favIconUrl || "";
}
return data;
}));
return this.tabs;
},
getTab: function(callback) {
this.getTabs();
for (var tabIdx in this.tabs) {
if(callback(tabIdx, this.tabs[tabIdx])) {
return this.tabs[tabIdx];
}
}
},
getTabsData: function(callback) {
var data = [];
var tabs = [];
tabs = this.getTabs();
console.log(this.tabs[0]);
for (var tabIdx in tabs) {
console.log(tabs[tabIdx]);
var tabData = callback(tabIdx, tabs[tabIdx]);
if(tabData) {
data.push(tabData);
}
}
return data;
},
setDebug: function() {
this.debug = true;
},
resetDebug: function() {
this.debug = false;
}
};
bmarksmaster.fn.init.prototype = bmarksmaster.fn;
return bmarksmaster;
})()
};
window.example = example;
})(window);
//end of bmarksmaster.js file
console.log(example.bmarksmaster().getTabs()); //this works, I can see the array
console.log(example.bmarksmaster().getTabs()[0]); //this doesn't work, I get undefined, never mind the shortcut
이 나에게 아주 이상한 같습니다 'VAR 지수 = local.tabs.length을; local.tabs [index ++] = 필터 (tabIdx, cwtabs [tabIdx]); ' 색인을 늘리는 이유는 무엇입니까? 또한,'.getTabs()'의 결과를 게시 할 수 있습니까? – Halcyon
.getTabs()의 결과는 다음과 같습니다 (console.log 사용). [{favicon : "", title : "", url : ""}, {favicon : "", title : "", url : ""}, ...] – crazybyte
편집 : 내가 말한 코드 조각을 삭제했습니다. :) – crazybyte