JavaScript Feature Reference: propertyIsEnumerable() Method Web Browser Support Test

Last reviewed/updated: 07 Feb 2018 | Published: 07 Feb 2018 | Status: Active
Web browser support: Internet Explorer 10+, Edge 12+, Firefox 6+, Chrome 30+, Opera 17+

1. Introduction

In this web page there are two web browser JavaScript feature support tests; 1.) a feature implementation test, and 2.) a feature capability test. First, the implementation test is run. The implementation test determines if the web browser recognizes the JavaScript propertyIsEnumerable() method. The implementation test is a simple test for the presence of web browser support, and a definitive test for the absence of web browser support. If the web browser does not recognize the JavaScript propertyIsEnumerable() method, the testing is stopped and the implementation test reports: Fail (no support): The web browser does not recognize the JavaScript propertyIsEnumerable() method. The web browser does not support the JavaScript propertyIsEnumerable() method.

If the web browser recognizes the JavaScript propertyIsEnumerable() method, the capability test is run. The capability test determines if the web browser's implementation of the JavaScript propertyIsEnumerable() method includes support for at least one propertyIsEnumerable() method capability. The capability test is a more definitive, albeit not an all inclusive, test for the presence of web browser support. If the web browser's implementation of the JavaScript propertyIsEnumerable() method includes support for the tested capability, the capability test reports: Pass (at least partial/possibly full support): The web browser recognizes the JavaScript propertyIsEnumerable() method, and supports at least one propertyIsEnumerable() method capability. The web browser at least partially/possibly fully supports the JavaScript propertyIsEnumerable() method. Positive determination of full web browser support is beyond the scope of this test. If the web browser's implementation of the JavaScript propertyIsEnumerable() method does not include support for the tested capability, the capability test reports: Pass/Fail (partial support): The web browser recognizes the JavaScript propertyIsEnumerable() method, but does not support at least one propertyIsEnumerable() method capability. The web browser partially supports the JavaScript propertyIsEnumerable() method.

The web browser support test source code is shown in Section 2.1. The web browser support test source code is run in Section 2.2, which shows the web browser support test result.

1.1. propertyIsEnumerable() Method Web Browser Support

Pass (at least partial/possibly full support): IE6+, ED12+, FF1.5+, SF3.1+, CH2+, OP7.50+.

1.2. Abbreviations

  • IE = Internet Explorer.
  • ED = Edge = EdgeHTML rendering engine (ED12+) and/or Edge browser (ED20+).
  • FF = Firefox.
  • SF = Safari.
  • CH = Chrome.
  • OP = Opera.

2. propertyIsEnumerable() Method Web Browser Support Test

2.1. Web Browser Support Test Source Code

<script>
if (Object.propertyIsEnumerable){
 function CustomConstructor(){
  this.ownPropertyOne = "value"; // By default, author-defined own property is enumerable.
  this.ownPropertyTwo = function(){}; // By default, author-defined own property is enumerable.
 }
 CustomConstructor.prototype.prototypePropertyOne = "value"; // By default, author-defined prototype property is not enumerable; however, is enumerated by for...in loop.
 CustomConstructor.prototype.prototypePropertyTwo = function(){}; // By default, author-defined prototype property is not enumerable; however, is enumerated by for...in loop.
 var objectViaCustomConstructor = new CustomConstructor();
 objectViaCustomConstructor.ownPropertyThree = "value"; // By default, author-defined own property is enumerable.
 objectViaCustomConstructor.ownPropertyFour = function(){}; // By default, author-defined own property is enumerable.
 var objectLiteral = {
  ownPropertyOne: "value", // By default, author-defined own property is enumerable.
  ownPropertyTwo: function(){} // By default, author-defined own property is enumerable.
 }
 objectLiteral.ownPropertyThree = "value"; // By default, author-defined own property is enumerable.
 objectLiteral.ownPropertyFour = function(){}; // By default, author-defined own property is enumerable.
 if (objectViaCustomConstructor.propertyIsEnumerable("ownPropertyOne") && objectViaCustomConstructor.propertyIsEnumerable("ownPropertyTwo") && !objectViaCustomConstructor.propertyIsEnumerable("prototypePropertyOne") && !objectViaCustomConstructor.propertyIsEnumerable("prototypePropertyTwo") && objectViaCustomConstructor.propertyIsEnumerable("ownPropertyThree") && objectViaCustomConstructor.propertyIsEnumerable("ownPropertyFour") && !objectViaCustomConstructor.propertyIsEnumerable("propertyDoesNotExist") && !objectViaCustomConstructor.propertyIsEnumerable("constructor") && !objectViaCustomConstructor.propertyIsEnumerable("hasOwnProperty") && !objectViaCustomConstructor.propertyIsEnumerable("isPrototypeOf") && !objectViaCustomConstructor.propertyIsEnumerable("propertyIsEnumerable") && !objectViaCustomConstructor.propertyIsEnumerable("toLocaleString") && !objectViaCustomConstructor.propertyIsEnumerable("toString") && !objectViaCustomConstructor.propertyIsEnumerable("valueOf") && objectLiteral.propertyIsEnumerable("ownPropertyOne") && objectLiteral.propertyIsEnumerable("ownPropertyTwo") && objectLiteral.propertyIsEnumerable("ownPropertyThree") && objectLiteral.propertyIsEnumerable("ownPropertyFour") && !objectLiteral.propertyIsEnumerable("propertyDoesNotExist") && !objectLiteral.propertyIsEnumerable("constructor") && !objectLiteral.propertyIsEnumerable("hasOwnProperty") && !objectLiteral.propertyIsEnumerable("isPrototypeOf") && !objectLiteral.propertyIsEnumerable("propertyIsEnumerable") && !objectLiteral.propertyIsEnumerable("toLocaleString") && !objectLiteral.propertyIsEnumerable("toString") && !objectLiteral.propertyIsEnumerable("valueOf")){
  document.write("<p><b>Pass</b> (at least partial/possibly full support): The web browser recognizes the JavaScript <code>propertyIsEnumerable()</code> method, and supports at least one <code>propertyIsEnumerable()</code> method capability. The web browser at least partially/possibly fully supports the JavaScript <code>propertyIsEnumerable()</code> method. Positive determination of full web browser support is beyond the scope of this test.</p>");
 } else {
  document.write("<p><b>Pass/Fail</b> (partial support): The web browser recognizes the JavaScript <code>propertyIsEnumerable()</code> method, but does not support at least one <code>propertyIsEnumerable()</code> method capability. The web browser partially supports the JavaScript <code>propertyIsEnumerable()</code> method.</p>");
 }
} else {
 document.write("<p><b>Fail</b> (no support): The web browser does not recognize the JavaScript <code>propertyIsEnumerable()</code> method. The web browser does not support the JavaScript <code>propertyIsEnumerable()</code> method.</p>");
}
</script>

2.2. Web Browser Support Test Result


3. Resources And Additional Information