javascript屬於原型繼承
用.__proto__查看原型
proto:Array所指的就是陣列的原型,透過下方測試後可以發現在原型中新增的屬性,陣列a和b中都可以看見 abc:'hi'。
var a = [1,2,3];
//在陣列原型中新增一個屬性,值為'hi'
a.__proto__.abc = 'hi';
var b = ['一','二','三'];
console.log(a);
console.log(b);
透果此方法在原型中新增一個涵式,讓全部Array原型都可以調用
在__proto__原型陣列中新增一個,getLast涵式 功能為{抓出陣列最後一個值},故a⇒3,b⇒三
var a = [1,2,3];
var b = ['一','二','三'];
a.__proto__.getLast = function(){
return this[this.length - 1];
}
console.log(a.getLast(),b.getLast()); //3 三
在原型中新增一個getName的涵式,透過console.log觀察後,可以發現__proto__中的this也有涵式的特性,__proto__中沒有name所以(family.proto.getName()); ,為undefined
var family = {
name : '瘦虎家'
}
family.__proto__.getName = function(){
return this.name;
}
console.log(family.getName());//瘦虎家
console.log(family.__proto__.getName());//undefined
透過查找後,可以在變數a最頂層的__proto__發現新增在變數family.__proto__的getName
var a = [1,2,3];
var b = ['一','二','三'];
var family = {
name : '瘦虎家'
}
family.__proto__.getName = function(){
return this.name;
}
console.log(a,b);
在b新增一個name,在調用proto裡的getName來驗證
console.log(b.getName()) //靜臭家 ,驗證後沒毛病!