Javascript 中 Object 的属性

Javascript 中所有对象都继承自 Ojbect。Object 有很多属性。那么我们是否能够用下面方式打印出来呢?

<html>
  <head>
    <script type="text/javascript">
    var object = new Object();
    for (var a in object)
    {
        alert(v);
    }
    </script>
  </head>
  <body>
  </body>
</html>

打印结果是空。

那么是不是说 Ojbect没有属性呢?

不是的。 Object 有很多属性。只不过 Object 的属性是不能枚举出来的,所以无法用 for in 打印出来。

我们可以用 下面判断一下。

<html>
  <head>
    <script type="text/javascript">
    var object = new Object();
    for (var a in object)
    {
        alert(v);
    }
    alert(object.propertyIsEnumerable("prototype"));//打印object 的原型是否可以枚举.结果为 false
    //说明不可枚举。
    </script>
  </head>
  <body>
  </body>
</html>

结果为 false。说明确实不可枚举。

那么如果你一定想看看这些属性怎么办呢?

我们想到 js 中一个内置对象 window。他有些属性我们都用过。我们看看是否能够打印出来

<html>
  <head>
    <script type="text/javascript">
    var list = new Array(); //定义 array
    for (var a in window)//循环 window 对象中属性
    {
        list.push(a); //把属性push到数组中
    }
    alert(list);//打印数组
    </script>
  </head>
  <body>
  </body>
</html>

结果列出了所有的属性:

window, document, InstallTrigger, list, a, addEventListener, removeEventListener, dispatchEvent, dump, name, parent, top, self, sessionStorage, localStorage, onmouseenter, onmouseleave, getSelection, scrollByLines, getComputedStyle, location, history, locationbar, menubar, personalbar, scrollbars, statusbar, toolbar, status, close, stop, focus, blur, length, opener, frameElement, navigator, applicationCache, alert, confirm, prompt, print, showModalDialog, postMessage, atob, btoa, matchMedia, screen, innerWidth, innerHeight, scrollX, pageXOffset, scrollY, pageYOffset, scroll, scrollTo, scrollBy, screenX, screenY, outerWidth, outerHeight, scrollByPages, sizeToContent, content, closed, crypto, pkcs11, controllers, defaultStatus, mozInnerScreenX, mozInnerScreenY, scrollMaxX, scrollMaxY, fullScreen, back, forward, home, moveTo, moveBy, resizeTo, resizeBy, updateCommands, find, mozPaintCount, mozRequestAnimationFrame, mozCancelAnimationFrame, mozCancelRequestAnimationFrame, mozAnimationStartTime, URL, onafterprint, onbeforeprint, onbeforeunload, onhashchange, onmessage, onoffline, ononline, onpopstate, onpagehide, onpageshow, onresize, onunload, ondevicemotion, ondeviceorientation, setTimeout, setInterval, clearTimeout, clearInterval, setResizable, captureEvents, releaseEvents, routeEvent, enableExternalCapture, disableExternalCapture, open, openDialog, frames, onabort, onblur, oncanplay, oncanplaythrough, onchange, onclick, oncontextmenu, ondblclick, ondrag, ondragend, ondragenter, ondragleave, ondragover, ondragstart, ondrop, ondurationchange, onemptied, onended, onerror, onfocus, oninput, oninvalid, onkeydown, onkeypress, onkeyup, onload, onloadeddata, onloadedmetadata, onloadstart, onmousedown, onmousemove, onmouseout, onmouseover, onmouseup, onmozfullscreenchange, onmozfullscreenerror, onmozpointerlockchange, onmozpointerlockerror, onpause, onplay, onplaying, onprogress, onratechange, onreset, onscroll, onseeked, onseeking, onselect, onshow, onstalled, onsubmit, onsuspend, ontimeupdate, onvolumechange, onwaiting, oncopy, oncut, onpaste, onbeforescriptexecute, onafterscriptexecute, mozIndexedDB, performance

原文地址:https://www.cnblogs.com/backpacker/p/2619165.html