原型

作者: EO_eaf6 | 来源:发表于2019-12-24 11:24 被阅读0次

    原型对象,构造函数,实例之间关系


    TIM图片20191224104351.jpg

    1、当创建一个函数后,同时创建了函数属性prototype---function.prototype,
    指向函数的原型对象,原型对象包含的属性方法被所有实例对象共享。

    function Person(){
    Person.protype.name="ming"
    Person.protype.setName=function (){
        this.name="huan"
    }
    }
    var person1=new Person()
    var person2=new Person()
    person1.name//ming
    person2.name//ming  
    

    2、共享原型对象属性方法,但通过实例person1,peroson2无法修改原型对象属性方法值,只能通过构造函数添加删除修改原型对象属性方法.

    每个实例有属性proto(在Firefox、safari,chrome中支持)

    person1._prop_=Person.prototype
    //表示实例与构造函数的原型对象之间的连接而非实例与构造函数之间连接,因此,通过实例person1,peroson2无法修改原型对象属性方法值,只能通过构造函数添加删除修改原型对象属性方法.
    

    3、原型对象获取一个指向构造函数的指针(属性)constructor指向构造函数

    Person.prototype.constructor=Person
    

    4、测试实例与原型对象关系

    Person.prototype.isPrototype(person1)//true
    person1.getPrototypeOf()=Person.prototype
    

    5、访问顺序

    person1.name="nice"
    console.log(person1.name)//nice
    delete person1.name
    console.log(person1.name)//ming
    

    访问时首先访问实例中的name属性,在第二个打印中,首先访问实例无name属性,再访问原型对象name属性
    6、访问属性归属测试hasOwnProperty(),当且仅当实例属性名与原型对象属性名相同时返回true

    person.name="nice"
    person1.hasOwnProperty("name")//true
    

    相关文章

      网友评论

          本文标题:原型

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