性能优化、面向对象、引用

前言:

现在不玩命,将来命玩你,现在不努力,未来不给力

--------------------------------正文---------------------------------

性能优化

  原因:
      1.稳定
      2.扩展
      3.性能
  包含:
      网络性能
      执行性能
1、网络性能(要用到第三方工具)
    Chrome      NetWork       需要经验支撑分析。

    Firefox     YSLow(http://yslow.org/)
        插件版:  必须先安装     Firebug
            步骤:进入YSLow官网
                  点击Firefox
                  点击Add to Firefox

            一定要在选项中把自动运行勾选

        书签版
            步骤:进入YSLow官网
                  点击install
                  把yslow按钮拖放到书签栏
                  重启浏览器
                书签版不能检测https

            有问题了。
网络性能优化方法
     1.减少http请求
           1个文件=一次连接+一次请求+一次等待+一次响应
           100个文件=100连接+100请求+100等待+100响应
     2.合并文件
           a).减少http请求
           b).让资源更小
                4KB一个单位,不足4KB按照4KB算
     3.压缩代码
           让文件更小
     4.使用CDN加速
     5.使用GZIP压缩
     6.使用DNS
     7.懒加载

更多搜索:雅虎军规

2、执行性能
     1.尽量不使用全局变量       (变量不回收)
     2.尽量少使用闭包           (使用后变量不一定会被回收)
     3.减少DOM操作              (属性太多,找的时候浪费)
     4.少使用定时器             (定时器不稳定)
     5.尽量使用正则操作字符串    (简单)
     6.尽量不使用属性           (找起来麻烦)
     7.尽量使用CSS3             (性能高)

         尽量不使用属性
           eg:  var len = arr.length;
                for(var i=0;i<len;i++){
            }

            字符串本身不可更改

面向对象(OOP)(不知道原理,但是不影响使用)

    类       Class       泛指一类事物
    对象     Object      某一个具体的东西
对象的组成
    属性——特征
    方法——行为

    什么是属性:变量和属性一样
               属性是属于某个对象的
               变量是自由的
    什么是方法:函数和方法一样
               方法是属于某个对象的
                函数是自由的
创建一个类
     构造函数:因为是创建对象的
  eg:
        //构造函数
        function Person(name,age,gender){
            //工厂模式
            //原料
            var obj = new Object();
            //加工
            obj.name = name;
            obj.age = age;
            obj.gender = gender;
            obj.showName = function(){
                return this.name;
            };
            obj.showAge = function(){
                return this.age;
            };
            obj.showGender = function(){
                return this.gender;
            };
            //出厂
            return obj;
        }
        var p1 = Person('老王',40,'男');
        var p2 = Person('李四',22,'男');
        document.write(p1.showName==p2.showName);          // false

出现两个问题:
1、没有new
2、同一个类的方法,不相等

    加new
        1.开头加new Object();
        2.结尾加return this;

    加方法不能直接在构造里写。   
        给构造的原型加
            构造函数的原型:Person.prototype

    属性给构造的this加
    方法给构造的原型加
  eg:
        //构造函数
        function Person(name,age,gender){
            this.name = name;
            this.age = age;
            this.gender = gender;
        }
        Person.prototype.showName = function(){
            return this.name;
        };
        Person.prototype.showAge = function(){
            return this.age;
        };
        Person.prototype.showGender = function(){
            return this.gender;
        };
        var p1 = new Person('老王',40,'男');
        document.write('我叫'+p1.showName()+',今年'+p1.showAge()+'岁,性别'+p1.showGender());
        var p2 = new Person('韩梅梅',30,'女');
        alert(p1.showName==p2.showName);               // true

this?

    不看定义,只看调用
    方法是谁的,this就是谁
    优先级:
        高   
            new              Object
            定时器            window
            方法、事件        对象本身
            正常调用          window\undefind
        低
    如果函数不止一层,那函数只管一层、this只看最后一次调用
    this永远只看最后一次调用
面向对象三大特性
    封装      抽出核心封装
    继承      子继承父.父类有的,子类一定有。子类有的,父类不一定有。父类改变,子类跟着变
    多态      多种状态、多重继承
继承
    属性
    方法

    Person  人类
        属性:name age gender
        方法:showName() showAge() showGender()
    Worker  工人类 
        属性:name age gender job
        方法:showName() showAge() showGender() showJob()

    矫正this指向
        fn.call(this指向谁,arg1,arg2....);
        或者
        fn.apply(this指向谁,[arg1,arg2,arg3...]);

    属性继承
        function 子类(a,b){
            父类.call(this,a,b);
            或者
            父类.apply(this,arguments);
        }
    方法继承
        a).
        子类.prototype = 父类.prototype;
        问题:
            子类的私有方法,父类也有
            原因:
                引用
        b).
        for(var key in 父类.prototype){
            子类.prototype[key] = 父类.prototype[key];
        }
        问题:
            子类的实例,不属于父类
        c).
        子类.prototpye = new 父类();
        瑕疵:
            子类实例.constructor 等于父类
        d).
        子类.prototype = new 父类();
        子类.prototype.constructor = 子类;

万物皆对象

   eg:
        function Person(name,age,gender){
            this.name = name;
            this.age = age;
            this.gender = gender;
        }
        Person.prototype.showName = function(){
            return this.name;
        };
        Person.prototype.showAge = function(){
            return this.age;
        };
        Person.prototype.showGender = function(){
            return this.gender;
        };

        function Worker(name,age,gender,job){
            // arguments  实参参数集合
            // call  apply  改变this指向
            Person.apply(this,arguemnts);
            this.job = job;
        }
        Worker.prototype = new Person();
        Worker.prototype.constructor = Worker;
        Worker.prototype.showJob = function(){
            return this.job;
        };

检测

typeof              检测基本数据类型     Array、Date也是Object
instanceof          检测复合类型         检测是否是Array、Date,但检测不出这两项和Object的区别
constructor         检测构造函数         检测是否是Object,区分Array、Date和Object

原型链

先在当前实例身上找,如果没有找构造类,如果类没有找父类原型,一级一级往上找,直到找到Object的原型。如果没有就是undefined

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,193评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,306评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,130评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,110评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,118评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,085评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,007评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,844评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,283评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,508评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,667评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,395评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,985评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,630评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,797评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,653评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,553评论 2 352

推荐阅读更多精彩内容

  • OOA:Object-Oriented Analysis面向对象分析方法 是在一个系统的开发过程中进行了系统业务调...
    楚易枫阅读 3,659评论 0 5
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,061评论 25 707
  • 我也是大山里的孩子,前十五年随在外打工的父母在浙江读书生活。以前还不能异地高考,初二便回老家读书,因为在外面见识过...
    王霜阅读 199评论 0 0
  • 温暖的清晨是最美的大姐开着教练车送我到单位的!昨晚她就约好了一定要送我,早晨起来后依旧熬粥,煮蛋。早早给她装...
    唯美儿阅读 216评论 1 2
  • 端午节,小宇有课还跟同学有约。我只好一人回了家乡,陪妈妈过端午节。 昨晚吃完饭,和爸爸妈妈姐姐姐夫来到了滨江边,钱...
    朱茱侠阅读 112评论 1 2