{
//创建一个对象并指定其原型,bar 为原型上的属性
const obj = Object.create({
bar: 'bar'
})
//foo 为对象自身的属性
obj.foo = 'foo'
for (let key in obj) {
console.log(obj[key])
}
}
{
//创建一个对象并指定其原型,bar 为原型上的属性
const obj = Object.create({
bar: 'bar'
})
//foo 为对象自身的属性
obj.foo = 'foo'
Object.keys(obj).forEach((key) => {
console.log(obj[key])
})
}
{
const obj = Object.create({
bar: "bar"
}, {
baz: {
value: 'baz',
enumerable: false
}
})
obj.foo = 'foo';
console.log(obj)
Object.getOwnPropertyNames(obj).forEach((key) => {
console.log(obj[key])
})
}
{
const obj = Object.create({
bar: "bar"
}, {
baz: {
value: 'baz',
enumerable: false
}
})
// 给对象添加一个不可枚举的 Symbol 属性
Object.defineProperties(obj, {
[Symbol('baz')]: {
value: 'Symbol baz',
enumerable: false
}
})
// 给对象添加一个可枚举的 Symbol 属性
obj[Symbol('foo')] = 'Symbol foo'
Object.getOwnPropertySymbols(obj).forEach((key) => {
console.log(obj[key]) // Symbol baz, Symbol foo
})
}
{
const obj = Object.create({
bar: "bar"
}, {
baz: {
value: 'baz',
enumerable: false
}
})
// 给对象添加一个不可枚举的 Symbol 属性
Object.defineProperties(obj, {
[Symbol('baz')]: {
value: 'Symbol baz',
enumerable: false
}
})
// 给对象添加一个可枚举的 Symbol 属性
obj[Symbol('foo')] = 'Symbol foo'
Reflect.ownKeys(obj).forEach((key) => {
console.log(obj[key]) // baz, foo, Symbol baz, Symbol foo
})
}
console