prototype是函數的屬性,每一個函數都擁有一個prototype屬性;__proto__是一個對象擁有的內置屬性,是new一個實例時動態添加的屬性,也是js內部尋找原型鏈的屬性。函數
prototype屬性擁有一個constructor屬性和一個__proto__屬性,默認狀況下constructor指向構造函數自身即fun.prototype.constructor == fun;對於普通對象,__proto__是該對象的原型鏈即fun.prototype,對於函數,__proto__是fun構造器即Function的prototype(Funtion.prototype)prototype
對象在原型鏈查找屬性時,是沿着__proto__查找的;函數的__proto__是Function.prototype即fun.prototype.constructor.__proto__,而普通對象的__proto__就是obj.__proto__即fun.prototypecode
function Animal () { } Function.prototype.say = function () { alert("function"); } Object.prototype.say = function () { alert("object") } Animal.say(); //function Animal.prototype.say();//object