js的一些总结

var t = (function(){
        function _(){
            //即是构造函数  也相当于主程序 即程序入口
//            t.e();//或者_.e();
        }
        //类(或者说构造函数)的默认原型是new Object(); --一个几乎没有属性的空对象(有constructor这个对象属性)  
//        这里没有指明要继承的类  所以这里相当于在自己原型对象的object对象上面添加方法
        _.prototype.eating = function (){
            console.log('吃');
        }
        
        //相当于内部类
        var A = (function(){
            function a(){
                
            }
            a.prototype.he = function(){
                console.log("喝");
            }
            return a;
        })();
        _.prototype.d = function(){
            var d1 = new t.c();
            d1.wan();
        }
        //静态方法
        _.e = function(){
            console.log("静态方法");
        }
        //相当于静态类
        _.c = (function(){
            function _(){};
            //改变原型引用 ---也就把A里面的方法继承过来  如果不写这个那么他的原型直接指向object这个几乎为空的对象
//            (Object的原型对象上才有我们常见的那些方法)
            _.prototype = new A();
            //这里相当于在原型对象A上添加方法
            _.prototype.wan = function(){
                console.log("玩");
            }
            return _;
        })();
        
        return _;
    })();
    var tt = new t();

    var t1 = (function(){
        function $(){};
        
        $.prototype = tt;
        return $;
    })();
    var tt1 = new t1();
//    console.log(tt1);
//    tt1.eating();
    //
    //因为在js里面静态方法和静态类  只能通过类名(构造函数名.静态方法()直接运行   不能用实例化对象运行  所以试图通过构造函数获取类名 来测试)
//    tt1.e();// tt1.e is not a function直接调用会报错

    //因为tt1的原型对象我们已经指定为了t1  ,而t1是我们自己编写的 并没有声明tt1的构造函数 , 所以tt1相当于(应该就是)没有构造函数  ,
    //实例的构造函数名正常来说都在原型对象里面用constructor声明,没有声明的话 找到的其实不是本身的  
//    所以他继续往上找, 找到的其实是t1的构造函数
    tt1.constructor.e();//成功
    console.log(tt1.constructor.name === tt1.__proto__.constructor);//true
    
    //正常来说 如果直接new 构造函数()创建一个对象的话 他的构造函数名称在他的原型对象里保存||这个原型对象是个空对象new Object()--->
//    function Object(){this.constructor={......};}  ---然后Object的原型对象里面存储了我们平常用的公共方法(例如toString()), object原型对象的原型对象是null
    //而一个构造函数的原型指明是另一个对象的话, 最好在原型对象里面指明他的构造函数  ,不然他相当于没有构造函数,找到的是父类的构造函数

原文地址:https://www.cnblogs.com/yanan-boke/p/7874766.html