forked from dreamapplehappy/hacking-with-javascript
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdemo-1.js
60 lines (51 loc) · 1.25 KB
/
demo-1.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
var dream = {};
Object.defineProperty(dream, 'name', {
value: 'dreamapple',
writable: true
});
console.log(dream.name); // dreamapple
dream.name = 'apple'; // 修改name属性
console.log(dream.name); // apple
Object.defineProperty(dream, 'a', {
value: 1,
enumerable: false // 不可枚举
});
Object.defineProperty(dream, 'b', {
value: 2,
enumerable: true // 可枚举
});
// 只会输出 b
for(prop in dream) {
console.log(prop);
}
console.log(Object.keys(dream)); // ['b']
console.log(dream.propertyIsEnumerable('a')); // false
console.log(dream.propertyIsEnumerable('b')); // true
Object.defineProperty(dream, 'c', {
value: 3,
configurable: false
});
// //throws a TypeError
//Object.defineProperty(dream, 'c', {
// configurable: true
//});
// //throws a TypeError
//Object.defineProperty(dream, 'c', {
// writable: true
//});
// //won't throws a TypeError
//Object.defineProperty(dream, 'c', {
// writable: false
//});
delete dream.c; // 属性不可以被删除
console.log(dream.c); // 3
//Object.defineProperty(dream, 'c', {
// writable: true,
// configurable: true
//});
////Object.defineProperty(dream, 'c', {
//// writable: true
////});
////Object.defineProperty(dream, 'c', {
//// writable: false
////});