mirror of
https://github.com/nodejs/node.git
synced 2025-05-21 14:02:10 +00:00

PR-URL: https://github.com/nodejs/node/pull/44741 Fixes: https://github.com/nodejs/node/issues/44650 Fixes: https://github.com/nodejs/node/issues/37472 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Jiawen Geng <technicalcute@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
50 lines
1.2 KiB
JavaScript
50 lines
1.2 KiB
JavaScript
// Copyright 2021 the V8 project authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
let object = { foo: false };
|
|
assertTrue((Object.hasOwn(object, "foo")));
|
|
|
|
let object2 = Object.create({ foo: true });
|
|
assertFalse(Object.hasOwn(object2, "foo"));
|
|
|
|
let object3 = Object.create(null);
|
|
assertFalse(Object.hasOwn(object3, "foo"));
|
|
|
|
let O = function() {
|
|
this.foo = 42;
|
|
};
|
|
let object8 = new O;
|
|
assertTrue((Object.hasOwn(object8, "foo")));
|
|
|
|
// Object is undefined or null
|
|
assertThrows(() => Object.hasOwn(undefined). TypeError);
|
|
assertThrows(() => Object.hasOwn(null). TypeError);
|
|
|
|
// Using defineProperty
|
|
let object4 = {};
|
|
Object.defineProperty(object4, "foo", {
|
|
value: 42
|
|
});
|
|
assertTrue((Object.hasOwn(object4, "foo")));
|
|
|
|
// Object.defineProperty with base
|
|
let base = {};
|
|
Object.defineProperty(base, "foo", {
|
|
value: 42,
|
|
configurable: true
|
|
});
|
|
let object5 = Object.create(base);
|
|
assertTrue((Object.hasOwn(base, "foo")));
|
|
assertFalse((Object.hasOwn(object5, "foo")));
|
|
|
|
// Prototype with getter and/or setter
|
|
let object6 = {
|
|
get foo() {}
|
|
};
|
|
let object7 = {
|
|
set foo(x) {}
|
|
};
|
|
assertTrue((Object.hasOwn(object6, "foo")));
|
|
assertTrue((Object.hasOwn(object7, "foo")));
|