原型

作者: 嘤嘤嘤998 | 来源:发表于2019-02-10 15:41 被阅读0次

    原型的作用是为函数对象声明通用的变量或者函数,构造函数的实例都会从原型上继承属性和方法。

        每个对象中都有__proto__属性,这个属性指向的就是它基于的原型对象。
        原型链:
            var Person = function(name){
                this.name = name
            };
            Person.prototype.getName = function(){
                return this.name;
            }
            var lcy = new Person(lcy);
            lcy.getName();      //lcy
    

    JS在创建对象(不论是普通对象还是函数对象)的时候,都有一个叫做proto的内置属性,用于指向创建它的函数对象的原型对象prototype。以上面的例子为例:

    console.log(lcy.__proto__ === Person.prototype)     //true
    

    同样,person.prototype对象也有proto属性,它指向创建它的函数对象(Object)的prototype

    console.log(Person.prototype.__proto__ === Object.prototype)    //true
    

    继续,Object.prototype对象也有proto属性,但它比较特殊,为null

    console.log(Object.prototype.__proto__)   //null
    
    我们把这个有__proto__串起来的直到Object.prototype.__proto__为null的链叫做原型链
    

    我们调用一个对象的属性或者方法的时候,会存在一个优先级的问题。优先级为:
    构造函数内定义的属性>构造函数的原型上定义的属性>沿着proto指定的原型(原型链)一直往上找,直到找到null为止。任何一步一旦找到就立马停止,不会继续往下找。

        person1.__proto__ == Person.prototype;
        person1.constructor == Person;
        Person.prototype.constructor == Person;
    

    相关文章

      网友评论

          本文标题:原型

          本文链接:https://www.haomeiwen.com/subject/hmqxeqtx.html