JavaScript中什么是原型对象,原型链及其用法。

每个函数创建后,解析器都会向函数中添加一个属性prototype
这个属性对应一个对象,这个对象就是我们所谓的原型的对象
如果函数作为普通函数调用则prototype无意义
如果函数以构造函数形式调用,它所创建的对象中都会有个隐藏的属性
指向该构造函数的原型对象,我们可以通过__proto__来访问该属性
原型对象就相当于一个公共区域,所有同一类的实例都可以访问到这个原型对象
我们可以将对象共有的内容,统一设置到原型对象

function Myclass(){}
        //向原型对象中添加属性  Myclass.prototype指向一个原型对象
        Myclass.prototype.a=123;
        Myclass.prototype.b=4567;
        Myclass.prototype.sayHolle=function(){
            alert("Hello")
        }
        var mc =new Myclass();
        //如果mc中没有a这个属性,则会找到原型对象中是否有a这个属性
        alert(mc.a);
        mc.a=456;
        alert(mc.a);
        mc.sayHolle();
        mc.age=18;
        //检查Myclass中是否有a属性
        alert("b" in Myclass);//true  自己里面没有,他会跑到原型中去检查
    
        //检查自己对象有没有该属性可以用一下函数检查
        alert( "age:"+mc.hasOwnProperty("age"));

我们定义了一个函数Myclass然后通过prototype属性给原型对象添加属性。
new了一个构造函数mc此时mc中有个属性叫__proto__,这个属性存的值和Myclass.prototype一样,都是指向同一原型对象,所有。只要是同一个对象,不管你new了多少个,他们__proto__都是指向同一个原型对象。所有
我们可以将对象共有的内容,统一设置到原型对象

好了,放一个图 方便理解
在这里插入图片描述

接下来我们来说一下原型链

alert(mc.__proto__.__proto__.hasOwnProperty("hasOwnProperty"));

我们要想知道hasOwnProperty在哪,就可以一层一层往下找。

原型链
原型对象也是对象,是对象就有原型,当我们使用对象属性或方法时,会先在自身寻找,自身如果有,则直接使用
如果没有则取原型对象寻找,如果原型对象中有,则使用,如果没有,则去原型的原型寻找,直到找到Object对象原型,Objcet对象没有原型,如果Objcet依然没找到,则返回undefined**====原型链**

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值