js原型prototype详解,原型的使用场景,隐含属性__proto__, 通过hasownproprety区别属性和方法是否来自原型

#1.原型(prototype)的概念

在这里插入图片描述

但是需要注意的是:使用函数中的方法或者属性时,寻找的顺序不同!先寻找函数本身属性或方法,再寻找函数原型。如果函数本身有需要使用的方法或属性,就直接使用,不再继续向函数原型寻找,如果没有找到,才会向函数原型中查找。

#2.结合代码,原型图形分析

//1.先创建一个函数,查看函数中是否有函数原型(prototype),通过__proto__属性访问
            //__proto__这个属性,是由浏览器提供的一种访问函数原型(prototype)的一个隐含属性
        function mycalss(){
        }
        var mc=new mycalss();               //通过构造函数创建,
        console.log(mc.__proto__);     //通过隐含属性访问函数原型,打印结果是object,证明确实有这个属性

        var mc2=new mycalss();            //通过构造函数创建
        console.log(mc2.__proto__);  //通过隐含属性访问函数原型,打印结果是object,证明确实有这个属性

        var mc3=new mycalss();   

        //2.使用函数原型
        mycalss.prototype.a="123";         //使用原型向原函数中添加属性
       

        console.log(mc.a);             //打印结果是123,证明mc对象中可以访问到mycalss原函数中的原型
        console.log(mc2.a);          //打印结果是123,证明mc2对象中可以访问到myclass原函数中的原型
         console.log(mc.a===mc2.a)    //打印结果是true,证明mc对象中使用的原型和mc2对象使用的函数原型相同

        //3.优先使用对象自身属性

         mc3.a="456";                 //向mc3的对象中,添加一个属性,和函数原型相同,但是值不同

         console.log(mc3.a);            //此时的打印结果是456,并不是函数原型中的123,证明使用对象时,优先在对象本身内查找,
                                      //存在就使用,不再向prototype中查找

图像理解如下图:
在这里插入图片描述

#3.原型的使用场景

我相信看了上面的代码和图形解析,你已经了解了原型的使用,以及原型是一个公共区域。所以当你需要多个对象使用到同一种属性或方法时,直接使用原型进行添加。
如果某一些不需要使用,可以通过向自身对象添加相应的属性或方法。使用时就会优先使用到自身的属性或方法。

#4.通过hasproperty检查属性和方法是否属于原型。

代码如下:

//4.hasOWnproperty使用
        function mycalss(){
        
            }
        mycalss.prototype.a="123";     //向原型中添加属性
        
        var fn=new mycalss();
        
        fn.b="456";                     //向对象中添加熟悉
        
        console.log(fn.hasOwnProperty("b")); //打印true,证明对象中含有该属性
        console.log(fn.hasOwnProperty("a")); //打印false,证明对象中不含有该属性

如果这篇文章对你有帮助,强点个赞吧。如果有写的不对的地方,欢迎指出,我会积极改正,共同进步!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南工gjl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值