<!doctype html>
<!--
Distributed under both the W3C Test Suite License [1] and the W3C
3-clause BSD License [2]. To contribute to a W3C Test Suite, see the
policies and contribution forms [3].

[1] http://www.w3.org/Consortium/Legal/2008/04-testsuite-license
[2] http://www.w3.org/Consortium/Legal/2008/03-bsd-license
[3] http://www.w3.org/2004/10/27-testcases
-->
<html>
<head>
<meta charset="utf-8">
<title>Object.prototype.hasOwnProperty: Check prototype chain</title>
<link rel="author" title="Masaya Iseki" href="mailto:iseki.m.aa@gmail.com">
<link rel="help" href="https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.hasownproperty">
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script>
test(function() {
  [{}, []].forEach(function(that) {
  	that.prop = 'exists';
  	assert_true(that.hasOwnProperty('prop'));
  	assert_true('hasOwnProperty' in that);
  	assert_false(that.hasOwnProperty('hasOwnProperty'));
  });
});

test(function() {
  ['foo', 42].forEach(function(that) {
  	assert_false(that.hasOwnProperty('hasOwnProperty'));
  });
});

test(function() {
  [null, undefined].forEach(function(that) {
    assert_throws(new TypeError(),
        function() { that.hasOwnProperty('hasOwnProperty'); });
  });
});
</script>

</body>
</html>