welcome to Cheeto's blog

0%

JavaScript核心篇:屬性列舉與原型關係

屬性列舉與原型關係

1
2
3
4
5
6
7
8
9
10
11
function Person(e) {};
Person['prototype']['name'] = '人類';

var casper = new Person();
casper['a'] = undefined;

console.log(casper);

console.log(casper.hasOwnProperty('a'));
console.log(casper.hasOwnProperty('b'));
console.log(casper.hasOwnProperty('name'));

屬性列舉與原型關係-1

就算我們把屬性的值設定為undefined,屬性依舊是存在的,只是它的值是undefined

hasOwnProperty 是對當前的物件去找屬性,不會去找原型的屬性,所以hasOwnProperty('name')這裡會顯示false

1
2
3
4
5
6
7
8
9
10
11
function Person(e) {};
Person['prototype']['name'] = '人類';

var casper = new Person();
casper['a'] = undefined;

console.log(casper);

for (var key in casper) {
console.log(key);
};

屬性列舉與原型關係-2

當原型的內容是可被列舉的情況下,利用for in一樣是可以把原型的內容列舉出來的
(原生的屬性基本上都是不可列舉的 enumerable: false)


如果不想要把原型的屬性列舉出來的話可以這樣 ↓

1
2
3
4
5
for (var key in casper) {
if (casper.hasOwnProperty(key)) {
console.log(key);
}
}

這樣就能夠只叫出casper的屬性,且不會把原型可列舉的屬性叫出來