js原型相关内容

prototype属性

 <script>
        // 任何函数  都有prototype属性
        // 函数的prototype属性值  是一个对象 我们把这个对象叫做原型  也叫做原型对象
        // 通过构造函数创建的实例对象,可以直接访问构造函数的prototype属性上的任意成员

        function Person() { 
            console.log("hello")
         }
        //  给原型对象添加name属性
         Person.prototype.name = "张三"
         Person.prototype.sayHi = function (){
             console.log("Hi")
         }
        console.log( Person.prototype)

        
        var p1 = new Person()
       console.log(p1.name)//张三
       console.log(p1.__proto__)
        var p2 = new Person()
        console.log(p2.name)//张三


        console.log(p1.sayHi ==p2.sayHi)//true
        // 访问的是同一个

        // 访问原型对象有两种方式
        // 1.是通过构造函数来访问   构造函数的prototype 属性
        // 2.通过实例对象来访问     实例对象的__proto__属性

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

        // 注意该属性是一个私有属性  不是标准的属性  ie上没有  不要在线上代码中用该属性,
        // 本地开发中 可以使用该属性查看原型上有哪些成员可用
        // 以__开头的都是私有属性,不希望 外部去修改

        // 修改原型上的成员  也不推荐  这样做
        p1.__proto__.color  ="lime"
        console.log(p1.__proto__.color)

        // 通过构造函数去修改原型上的成员
        Person.prototype.color = "red"
        console.log(p1.__proto__)

        // __proto__是对象上的属性
        // prototype  是函数上的属性
        // __proto__指向了原型 
    </script>

constructor属性

 <script>
        //  constructor属性
        // 原型对象中自带的属性
        // 该属性值  指向了构造函数

        function Person(){
            
        }
        console.log(Person.prototype.constructor)

        // 构造函数通过prototype属性找到原型对象
        // 原型对象通过constructor属性找到构造函数

        // 构造函数通过new得到实例对象
        // 实例对象不能直接找到构造函数

        // 实例对象的__proto__属性找到了原型对象、
        // 实例对象可以间接的通过原型对象的constructor属性找到构造函数

        // 属性查找原则  自下而上
        // 1.首先在对象自身上查找是否有该属性,如果有,返回该值。
        // 2.如果没有,就去原型对象上找,如果有返回该值。
        // 3,如果没有,就沿着原型链往上查找  到Object.prototype上  如果有返回结果
        // 4.如果Object.prototype上也没有就返回  undefined

        // 属性设置原则
        // 1.如果对象没有该属性,就会对对象添加该属性
        // 2.如果对象有该属性,就会修改对象原来的属性值
 
    </script>

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值