JS原型

作者: 苏码码 | 来源:发表于2021-04-09 18:57 被阅读0次

    原型是一个对象,其他对象可以通过它来实现属性继承
    一、JS对象分两种:
    普通对象object和函数对象function
    prototype 是函数才有的属性
    proto是每个对象都有的属性

    二、普通对象和函数对象区别
    凡是通过new Function创建的对象都是函数对象,其他都是普通对象(通常通过object创建),可以通过typeof来判断

    function f1(){}
    typeof f1 // 'function'
    
    var o1 = new f1() // 函数实例
    typeof o1   //'object'
    
    var o2 = {}
    typeof o2  // 'object'
    1、每一个函数对象都有一个prototype属性,但是普通对象是没有的;prototype下面又有个constructor,指向这个函数
    2、每个对象都有一个名为_proto_的内部属性,指向它所对应的构造函数的原型对象,原型链基于_proto_
    
    
    function Person(){}
    Person.prototype.name = 'abc'
    var p1 = new Person()
    var p2 = new Person()
    p2.name = 'mnp'
    p1.hasOwnProperty('name')   => false    原型属性
    p2.hasOwnProperty('name')  => true    实例属性
    'name' in p1  => true
    'name' in p2  => true
    // hasOwnProperty  检测某个属性是否属于某个实例还是原型属性
    //in 操作符会在通过对象能够访问给定属性时返回 true,无论该属性存在于实例中还是原型中
    

    相关文章

      网友评论

          本文标题:JS原型

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