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
相关文章
相关标签/搜索