zoukankan      html  css  js  c++  java
  • 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
        //而一个构造函数的原型指明是另一个对象的话, 最好在原型对象里面指明他的构造函数  ,不然他相当于没有构造函数,找到的是父类的构造函数

  • 相关阅读:
    css3
    My97DatePicker时间控件使用
    练习中遇到的问题及知识点
    使用slideDown和slideUp做二级菜单时遇到的bug解决方法
    Google Chrome浏览器不支持小于12px的字体大小的问题及解决方法(我写的都不行)
    区别不同浏览器的兼容性
    img图片元素下多余空白解决方案
    gridview列绑定HyperLink
    vs设计界面出现“建控件时出错 响应在此上下文中不可用”
    SQL Server不能通过外部IP访问,解决方法
  • 原文地址:https://www.cnblogs.com/yanan-boke/p/7874766.html
Copyright © 2011-2022 走看看