mirror of https://github.com/tc39/test262.git
38 lines
1.4 KiB
JavaScript
38 lines
1.4 KiB
JavaScript
// Copyright (C) 2020 Alexey Shvayka. All rights reserved.
|
|
// This code is governed by the BSD license found in the LICENSE file.
|
|
|
|
/*---
|
|
esid: sec-object.getownpropertydescriptor
|
|
description: >
|
|
String primitive as first argument is coerced to object.
|
|
info: |
|
|
Object.getOwnPropertyDescriptor ( O, P )
|
|
|
|
1. Let obj be ? ToObject(O).
|
|
[...]
|
|
3. Let desc be ? obj.[[GetOwnProperty]](key).
|
|
4. Return FromPropertyDescriptor(desc).
|
|
|
|
String Exotic Objects
|
|
|
|
String exotic objects always have a data property named "length" whose value is the number
|
|
of code unit elements in the encapsulated String value. Both the code unit data properties
|
|
and the "length" property are non-writable and non-configurable.
|
|
---*/
|
|
|
|
assert.sameValue(Object.getOwnPropertyDescriptor('', '0'), undefined);
|
|
|
|
var indexDesc = Object.getOwnPropertyDescriptor('foo', '0');
|
|
|
|
assert.sameValue(indexDesc.value, 'f', '[[Value]]');
|
|
assert.sameValue(indexDesc.writable, false, '[[Writable]]');
|
|
assert.sameValue(indexDesc.enumerable, true, '[[Enumerable]]');
|
|
assert.sameValue(indexDesc.configurable, false, '[[Configurable]]');
|
|
|
|
var lengthDesc = Object.getOwnPropertyDescriptor('foo', 'length');
|
|
|
|
assert.sameValue(lengthDesc.value, 3, '[[Value]]');
|
|
assert.sameValue(lengthDesc.writable, false, '[[Writable]]');
|
|
assert.sameValue(lengthDesc.enumerable, false, '[[Enumerable]]');
|
|
assert.sameValue(lengthDesc.configurable, false, '[[Configurable]]');
|