1.2.4.4.Reflection 與 Extend
反射 (reflection)
一個物件可以看到自己的東西, 然後改變自己的屬性跟方法
var person = {
firstname: 'Default',
lastname: 'Default',
getFullName: function(){
return this.firstname + ' ' + this.lastname;
}
}
var john = {
firstname: 'John',
lastname: 'Doe'
}
//don't do this
john.__proto__ = person;
//將會遍歷這個物件的所有屬性跟方法
//印出:
//firstname: 'Default',
//lastname: 'Default',
// getFullName: function(){
// return this.firstname + ' ' + this.lastname;
// }
for (var prop in John) {
console.log(prop + ': ' + john[prop]);
}
//確認prop是否是John所擁有的
for (var prop in John) {
if (John.hasOwnProperty(prop)) {
console.log(prop + ': ' + john[prop]);
}
}
var jane = {
address: '111 Main St',
getFormalFullName: function(){
return this.lastname + ' ' + this.firstname;
}
}
var jim = {
getFirstName: function(){
return this.firstname;
}
}
//把所有的屬性與方法放到john
_.extend(john, jane, jim)
Last updated
Was this helpful?