js基础_37、原型对象2

找对象自己的属性
使用in检查对象中是否有某个属性时,如果对象中没有但是原型中有,也会返回true;

可以使用hasOwnProperty()方法来检查对象自身中是否含有该属性

<script>
            //创建一个构造函数
            function MyClass(){
            }
            //向MyClass原型对象中添加一个属性name
            MyClass.prototype.naem='我是原型中的名字';
            var mc=new MyClass();
            //使用in检查对象中是否有某个属性时,如果对象中没有但是原型中有,也会返回true
            console.log('name' in MyClass);
            //可以使用hasOwnProperty()方法来检查对象自身中是否含有该属性
            //使用该方法只有当对象自身中含有该属性时才会返回true 
            console.log(mc.hasOwnProperty('name'));
</script>

结果:
image

找原型的原型。
我们定义的构造函数的原型对象其实也还有自己也有原型对象

原型对象也是对象,所以它也有原型对象

当我们使用一个对象的属性或方法时,会现在自身的对象中寻找,如果有就直接用,没有则去原型对象中寻找,如果原型对象中有,则直接使用,如果没有则去原型的原型中寻找,直到找到Object对象的原型为止,Object对象的原型没有原型,如果在Object中依然没有找到,则返回Undefined。(原型链)。
逻辑如图:
image

<script>
            //创建一个构造函数
            function MyClass(){
            }
            //向MyClass原型对象中添加一个属性name
            MyClass.prototype.naem='我是原型中的名字';
            var mc=new MyClass();
            //一些可以使用的属性或方法,比如hasOwnProperty,我们对象里没添加,对象的原型里也没有添加,那可能就在原型的原型里
            console.log(mc.__proto__.__proto__.hasOwnProperty('hasOwnProperty'));
</script>
posted @ 2022-03-12 09:30  青仙  阅读(21)  评论(0编辑  收藏  举报