JS原型对象

JS原型对象

原型prototype

我们所创建的每一个函数,解析器都会向函数添加一个属性prototype

这个属性对应这一个对象,这个对象就是我们所谓的原型对象

如果函数作为普通函数调用protot没有任何作用

当函数通过构造函数调用时

一.

        function myclass(){
            
        }
        function proto(){

        }

        console.log(myclass.prototype == proto.prototype);

二.

      /*   
            创建一个构造函数
      */
        function myclass(){

        }
        // 向myclass的原型中添加一个name属性
        myclass.prototype.name = "原型";

        var mc = new myclass();
        mc.age = 15;

        console.log(mc.name);
        // 使用in检查对象中是否含有某个属性,如果对象中没有但原型中有,也会返回true
        console.log("name" in mc);
        /* 
            可以使用对象的hasOwnProperty()来检查对象自身中是否含有该属性
            使用该方法只有当对象自身中含有属性时,才返回true
        */
        console.log(mc.hasOwnProperty("name")); //false
        console.log(mc.hasOwnProperty("age"));  //true

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

当我们使用一个对象的属性和方法时,会先在自身中寻找,

自身如果有,则直接使用,

如果没有则去原型对象中寻找,如果原型对象中有,则使用,

如果没有则去原型的原型中寻找,直到找到object对象的原型

object对象的原型没有原型,如果在object总依然没有找到,则返回undefined

        console.log(mc.__proto__.hasOwnProperty("hasOwnProperty"));//false
        console.log(mc.__proto__.__proto__);//object
posted @ 2021-03-08 09:40  MeiwtJan  阅读(78)  评论(0编辑  收藏  举报