2013-07-21 23 views
6

Ieri sera, mi sono davvero annoiato e ho pensato ad una piccola idea per una piccola sceneggiatura. Fondamentalmente stavo pensando a quante funzioni built-in PHP ha rispetto a JavaScript e poi ho capito che davvero non so quante funzioni JavaScript abbia effettivamente. Ho pensato di scrivere una sceneggiatura che guardasse attraverso l'oggetto della finestra incluso ogni oggetto all'interno dell'oggetto e così via. Ho scritto la sceneggiatura e ha funzionato (l'ho provata su un oggetto più piccolo).In looping di tutti gli elementi nell'oggetto della finestra

Tuttavia, il mio problema è che JavaScript non mi consentirà di eseguire il loop dell'intero oggetto Windows.

ho provato:

for (var key in window) { 
    console.log(key); 
} 

Ho anche provato:

var a = Object.create(window); 
for (var key in a) { 
    console.log(key); 
} 

Entrambi i frammenti di codice mi danno:

top 
window 
location 
external 
chrome 
Intl 
v8Intl 
document 
script1374438467163 
$pick 
$try 
IFrame 
Elements 
OverText 
IframeShim 
Mask 
Clientcide 
dbug 
value 
debugCookie 
StyleWriter 
StickyWin 
TabSwapper 
Collapsible 
Collapsable 
Drag 
Cookie 
Accordion 
Asset 
Spinner 
MultipleOpenAccordion 
MooTools 
typeOf 
instanceOf 
Type 
Hash 
Native 
$A 
$arguments 
$chk 
$clear 
$defined 
$each 
$empty 
$extend 
$H 
$merge 
$lambda 
$mixin 
$random 
$splat 
$time 
$type 
$unlink 
Browser 
$constructor 
Window 
$family 
Document 
$exec 
Slick 
Element 
uniqueNumber 
$ 
getDocument 
getWindow 
Selectors 
$$ 
addListener 
removeListener 
retrieve 
store 
eliminate 
Class 
Chain 
Events 
Options 
Request 
DOMEvent 
Event 
addEvent 
removeEvent 
addEvents 
removeEvents 
fireEvent 
cloneEvents 
Fx 
Swiff 
getSize 
getScroll 
getScrollSize 
getPosition 
getCoordinates 
getHeight 
getWidth 
getScrollTop 
getScrollLeft 
getScrollHeight 
getScrollWidth 
getTop 
getLeft 
setCNETAssetBaseHref 
Table 
BehaviorAPI 
Behavior 
Color 
$RGB 
$HSB 
$HEX 
Keyboard 
Locale 
URI 
CodeMirror 
JSHINT 
_ 
emmet 
Sidebar 
keyMods 
Layout 
MooShellActions 
Base64 
Dropdown 
editorsModified 
Track 
update_resource_input 
remove_resource 
prepareToSubmit 
submit_external_resource 
change_default_input_value 
validate 
warn 
disallowedPlatforms 
default_code_mirror_options 
MooShellEditor 
MooShellSettings 
disqus_developer 
disqus_identifier 
disqus_title 
csspath 
jspath 
imgpath 
mediapath 
codemirrorpath 
panel_html 
panel_css 
panel_js 
makefavouritepath 
example_server 
username 
static_hash 
csrfToken 
mooshell 
preload_resources 
DP 
resources 
default_text 
add_external_resource_url 
_gaq 
TowTruckConfig_enableAnalytics 
TowTruckConfig_cloneClicks 
TowTruck 
_gat 
gaGlobal 
style_html 
css_beautify 
js_beautify 
Beautifier 
language 
Heyoffline 
page_test 
i 
a 
key 
webkitNotifications 
localStorage 
sessionStorage 
applicationCache 
indexedDB 
webkitIndexedDB 
webkitStorageInfo 
CSS 
performance 
console 
devicePixelRatio 
styleMedia 
parent 
opener 
frames 
self 
defaultstatus 
defaultStatus 
status 
name 
length 
closed 
pageYOffset 
pageXOffset 
scrollY 
scrollX 
screenTop 
screenLeft 
screenY 
screenX 
innerWidth 
innerHeight 
outerWidth 
outerHeight 
offscreenBuffering 
frameElement 
crypto 
clientInformation 
navigator 
toolbar 
statusbar 
scrollbars 
personalbar 
menubar 
locationbar 
history 
screen 
postMessage 
close 
blur 
focus 
ondeviceorientation 
ontransitionend 
onwebkittransitionend 
onwebkitanimationstart 
onwebkitanimationiteration 
onwebkitanimationend 
onsearch 
onreset 
onwaiting 
onvolumechange 
onunload 
ontimeupdate 
onsuspend 
onsubmit 
onstorage 
onstalled 
onselect 
onseeking 
onseeked 
onscroll 
onresize 
onratechange 
onprogress 
onpopstate 
onplaying 
onplay 
onpause 
onpageshow 
onpagehide 
ononline 
onoffline 
onmousewheel 
onmouseup 
onmouseover 
onmouseout 
onmousemove 
onmousedown 
onmessage 
onloadstart 
onloadedmetadata 
onloadeddata 
onload 
onkeyup 
onkeypress 
onkeydown 
oninvalid 
oninput 
onhashchange 
onfocus 
onerror 
onended 
onemptied 
ondurationchange 
ondrop 
ondragstart 
ondragover 
ondragleave 
ondragenter 
ondragend 
ondrag 
ondblclick 
oncontextmenu 
onclick 
onchange 
oncanplaythrough 
oncanplay 
onblur 
onbeforeunload 
onabort 
getSelection 
print 
stop 
open 
showModalDialog 
alert 
confirm 
prompt 
find 
scrollBy 
scrollTo 
scroll 
moveBy 
moveTo 
resizeBy 
resizeTo 
matchMedia 
setTimeout 
clearTimeout 
setInterval 
clearInterval 
requestAnimationFrame 
cancelAnimationFrame 
webkitRequestAnimationFrame 
webkitCancelAnimationFrame 
webkitCancelRequestAnimationFrame 
atob 
btoa 
addEventListener 
removeEventListener 
captureEvents 
releaseEvents 
getComputedStyle 
getMatchedCSSRules 
webkitConvertPointFromPageToNode 
webkitConvertPointFromNodeToPage 
dispatchEvent 
webkitRequestFileSystem 
webkitResolveLocalFileSystemURL 
openDatabase 
TEMPORARY 
PERSISTENT 

Tuttavia, so che ci sono molte più proprietà all'interno dell'oggetto Windows. Come tutte le funzioni SVG e le funzioni HTML. Perché JavaScript ignora molte proprietà nell'oggetto?

+0

Alcune proprietà sono ereditate e alcune non sono enumerabili. Per ottenere proprietà non enumerabili, dovresti usare 'Object.getOwnPropertyNames()' su 'window' e su ogni oggetto nella sua catena di prototipi. Per ottenere gli oggetti ereditati dalla catena del prototipo, devi usare 'Object.getPrototypeOf()'. http://jsfiddle.net/FtVXN/ –

+0

@CrazyTrain Grazie, puoi aggiungerlo come risposta se lo desideri. – Shawn31313

risposta

4

Nei moderni browser Object.getOwnPropertyNames() e Object.getPrototypeOf() consentono di ottenere tutte le proprietà di tutti gli oggetti nella catena del prototipo.

http://jsfiddle.net/FtVXN/

var obj = window; 

do Object.getOwnPropertyNames(obj).forEach(function(name) { 
     console.log(name); 
    }); 
while(obj = Object.getPrototypeOf(obj)); 

Se volete vedere la separazione degli oggetti prototipo, quindi aggiungere una linea che fornisce un divisore.

http://jsfiddle.net/FtVXN/1/

var obj = window; 

do { 
    Object.getOwnPropertyNames(obj).forEach(function(name) { 
     console.log(name); 
    }); 
    console.log("============================="); 
} while(obj = Object.getPrototypeOf(obj)); 

penso mi ricordo che in Firefox, alcune variabili globali non appaiono fino a quando non accedervi. Potrebbe essere necessario fare un po 'di sperimentazione se si trova che sia il caso.

+0

Grazie. Questo ha aiutato. – Shawn31313

+0

Prego. Sono contento che ci abbia aiutato. –

Problemi correlati