js中的prototype和__proto__

  1. prototype是函數的屬性,每一個函數都擁有一個prototype屬性;__proto__是一個對象擁有的內置屬性,是new一個實例時動態添加的屬性,也是js內部尋找原型鏈的屬性。函數

  2. prototype屬性擁有一個constructor屬性和一個__proto__屬性,默認狀況下constructor指向構造函數自身即fun.prototype.constructor == fun;對於普通對象,__proto__是該對象的原型鏈即fun.prototype,對於函數,__proto__是fun構造器即Function的prototype(Funtion.prototype)prototype

  3. 對象在原型鏈查找屬性時,是沿着__proto__查找的;函數的__proto__是Function.prototype即fun.prototype.constructor.__proto__,而普通對象的__proto__就是obj.__proto__即fun.prototypecode

  4. function Animal () {
    
    }
    
    Function.prototype.say = function () {
       alert("function");
    }
    
    Object.prototype.say = function () {
       alert("object")
    }
    
    Animal.say(); //function
    Animal.prototype.say();//object
相關文章
相關標籤/搜索