最小全局变量 :
        1)每个javascript环境有一个全局对象,当你在任意的函数外面使用this的时候可以访问到,你创建的每一个全部变量都成了这个全局对象的属性,在浏览器中,方便起见,该全局对象有一个附加属性叫做window,此window(通常)指向该全局对象本身,下面的代码片段显示了如何在浏览器环境,中创建和访问的全局变量
        myglobal = 'hello';   //不推荐写法
        console.info(window.myglobal); //hello
        console.info(window['myglobal']);  //hello
        console.info(myglobal);  //hello
        console.info(this.myglobal);   //hello
        2)全局变量的问题:
            全局变量的问题在于,你的JavaScript应用程序和web页面上的所有代码都共享了这些全局变量,他们住在同一个全局命名空间,所以当程序的两个不同部分定义同名但不同作用的全局变量的时候,命名冲突在所难免。
            function test()
            {
               
                var a = b = 0; //不要这样写,因为b会当成隐式全局变量;
            }
        3)忘记Var的副作用
            (1)通过var创建的全局变量(任何函数之外的程序中创建)是不能被删除的。
            (2)无var创建的隐式全局变量(无视是否在函数中创建)是能被删除的。
            例:
                var a= 'song';
                delete a ;  //不可以删除
                b = 'aaa';
                delete b;   //可以删除,已经不存在了
                console.info(a);
                console.info(b);  
            总结:                          
             这表明,在技术上,隐式全局变量并不是真正的全局变量,但它们是全局对象的属性。属性是可以通过delete操作符删除的,而变量是不能的:
         4) 访问全局对象
             这种方法可以随时获得全局对象,因为其在函数中被当做函数调用了(不是通过new构造),this总 是指向全局对象。实际上这个病不适用于ECMAScript 5严格模式,所以,在严格模式下时,你必须采取不同的形式。例如,你正在开发一个JavaScript库,你可以将你的代码包裹在一个即时函数中,然后从 全局作用域中,传递一个引用指向this作为你即时函数的参数。
         5)单var形式
             (1) 提供了一个单一的地方去寻找功能所需要的所有局部变量
             (2) 防止变量在定义之前使用的逻辑错误
             (3)帮助你记住声明的全局变量,因此较少了全局变量//zxx:此处我自己是有点晕乎的…
             (4)少代码(类型啊传值啊单线完成)
             例:
             var a = 'sogn',
             age = '32l',
             sex = 'man';
         总结:
             您可以使用一个var语句声明多个变量,并以逗号分隔。像这种初始化变量同时初始化值的做法是很好的。这样子可以防止逻辑错误(所有未初始化但声明的变量的初始值是undefined)和增加代码的可读性。在你看到代码后,你可以根据初始化的值知道这些变量大致的用途,例如是要当作对象呢还是当作整数来使

6)var散布的问题:
            (1)当你使用一个变量,然后不久在函数中又重新声明的话.就可能产生逻辑错误,对于javascript,只要在你的变量是在同一个作用域中,它都被当做是声明的.即使是它在Var声明前使用的时候,看下面
             例:
            name = 'songxiiuxuan';
            test();
            function test()
            {
                alert(name);
                var name = 'kaixin';
                alert(name); 
            } 
        总结:
            为了完整,我们再提一提执行层面的稍微复杂点的东西。代码处理分两个阶段,第一阶段是变量,函数声明,以及正常格式的参数创建,这是一个解析和进入上下文 的阶段。第二个阶段是代码执行,函数表达式和不合格的标识符(为声明的变量)被创建。但是,出于实用的目的,我们就采用了”hoisting”这个概念, 这种ECMAScript标准中并未定义,通常用来描述行为
        7)有一种表达式 (并不常用)
            (function (){}) //用(这里包含的只能是表达式,不可以是流程语句)
        8)函数表达式出现的场所:
        函数声明只能出现在程序或函数体内。从句法上讲,它们 不能出现在Block(块)({ ... })中,例如不能出现在 if、while 或 for 语句中。因为 Block(块) 中只能包含Statement语句, 而不能包含函数声明这样的源元素。另一方面,仔细看一看规则也会发现,唯一可能让表达式出现在Block(块)中情形,就是让它作为表达式语句的一部分。但是,规范明确规定了表达式语句不能以关键字function开头。而这实际上就是说,函数表达式同样也不能出现在Statement语句或Block(块)中(因为Block(块)就是由Statement语句构成的)。
        9)module模式:
        (function(){
            // .. 所有的变量和function 都在这里声明,并且作用域也只能在这个圈子闭包里 .  
            //... 但是这里的代码依然可以访问外部全局的对象
        }();
        //先说一下,new一下,也就是说每个实例在内在里都有一份copy,
       // 如果我们用匿名的函数表达式,这样的话,只会在内存中一份表达式
          var ceshiModule =  (function (my){   
                my.addKaixin = function ()   //这个可以被外面访问到
                {
                    console.info('songxixuan');
                }
                return my;
          }(ceshiModule || {}))   // var ceshiModule || {}  // 松耦合扩展
         
          10):原型继承;
              var kaixin = function ()
              {
                    
              }
          (1)原型使用方法1.
              kaixin.prototype.bar = function ()
              {
                 console.info('songxiuxuan');
              }
          (2)原型使用方法2.
              kaixin.prototype = {
                  console.info('this is kaixin');   
              }
          (3)原型常用方法:
      constructor:
           对创建对象的函数的引用(指针)。对于 Object 对象,该指针指向原始的 Object() 函数。
      Prototype:
            对该对象的对象原型的引用。对于所有的对象,它默认返回 Object 对象的一个实例。
      hasOwnProperty(property)
            判断对象是否有某个特定的属性。必须用字符串指定该属性。(例如,o.hasOwnProperty("name"))
    IsPrototypeOf(object)
            判断该对象是否为另一个对象的原型。
    PropertyIsEnumerable
            判断给定的属性是否可以用 for...in 语句进行枚举。
    ToString()
            返回对象的原始字符串表示。对于 Object 对象,ECMA-262 没有定义这个值,所以不同的 ECMAScript 实现具有不同的值。
    ValueOf()
            返回最适合该对象的原始值。对于许多对象,该方法返回的值都与 ToString() 的返回值相同
         
          (1)instanceof
            childObj instanceof parentObj
            这个是判断对象是否继承父类继承
          (2)in
          '变量名称' in 对象
          检查一下变量名称是否是对象的属性和方法 ,这个并不是只查找当前的对象,还会向上继续查找.会去原型链去查找
          (3)hasOwnProperty();
          这个方法是只查找当前对象的属性的一个方法,并不会去查找原型链上的属性或者方法
          obj.hasOwnProperty('bar');
          (4)
          //但是当前的方法,可以被别人使用
          var foo = {
            'hasOwnProperty' :function ()
             {
                return false;  
             },
             'bar':'song'
          }
          //如果还是按照以前的方法去调用的话,只会返回false
          Object.hasOwnProPerty('bar');     //所以就要用这个方法
          (4)原型继承:
          var oTest = function ()
          {
          }
          //继承oKaixin这个方法
          //继承的时候,他们去找,去启用方法的时候,是先在自己类中去查找方法,
          //然后在向上他的父级去查找,如果没有,就去查询Object是否有方法
          //是先检查自己然后在去向上逐一的查找.
          oTest.prototype = new oKaixin();

//继承oKaixin的原型方法
          oTest.prototype = oKaixin.prototype;
  js解决json
   var obj = str.parseJSON(); //由JSON字符串转换为JSON对象
    或者
   var obj = JSON.parse(str); //由JSON字符串转换为JSON对象
   var last=obj.toJSONString(); //将JSON对象转化为JSON字符
    或者
   var last=JSON.stringify(obj); //将JSON对象转化为JSON字符

开心菜鸟学习系列-----javascript(2)的更多相关文章

  1. 开心菜鸟学习系列笔记-----Javascript(1)

    js 一些常见的使用方法        // target : 不管是否出现冒泡,他都是代表最开始引发事件的对象   // this   : 是指当前函数.  //ie 事件对象   : window ...

  2. 老菜鸟学习:Javascript 将html转成pdf

    起因:处理某个项目,需要把页面上的数据(订单.运单)等导出pdf. 第一个想法:从 Java 层去想.但是经过各种资料查询和实践,第一个想法宣告放弃: 幸好客户的要求是:导出的 pdf 尺寸要和打印的 ...

  3. 开心菜鸟学习系列学习笔记------------nodejs util公共函数

    global  在最外层定义的变量:    全局对象的属性:    隐式定义的变量(未定义直接赋值的变量).  一.process   process 是一个全局变量,即 global 对象的属性 ...

  4. Asp.Net Web API 2 官网菜鸟学习系列导航[持续更新中]

    详情请查看http://aehyok.com/Blog/Detail/67.html 个人网站地址:aehyok.com QQ 技术群号:206058845,验证码为:aehyok 本文文章链接:ht ...

  5. Asp.Net Web API 2 官网菜鸟学习系列导航

    链接地址: http://www.cnblogs.com/aehyok/p/3446289.html

  6. 开心菜鸟系列----变量的解读(javascript入门篇)

                       console.info(         console.info(window['weiwu'])          console.info(window. ...

  7. 开心菜鸟系列----函数作用域(javascript入门篇)

      1 <!DOCTYPE html>   2 <html>   3 <script src="./jquery-1.7.2.js"></ ...

  8. JavaScript学习系列之内存模型篇

    一个热爱技术的菜鸟...用点滴的积累铸就明日的达人 正文 如果真的想学好一门语言,那么一定要了解它内存模型,本篇文章就带你走进JavaScript的内存模型,由于本人才疏学浅,若有什么表述有误的地方, ...

  9. JavaScript学习系列5 ---ES6中的var, let 和const

    我们都知道JavaScript中的var,在本系列的 JavaScript学习系列2一JavaScript中的变量作用域 中,我们详细阐述了var声明的变量的作用域 文章中提到,JavaScript中 ...

随机推荐

  1. 基于toyix的进程和轻权进程的学习

    我们在平时的计算机课上学习过进程,知道程序的执行的背后其实就是进程在进行一些操作.大家都知道打开windows的任务管理器可以看到正在运行的进程,当程序卡死时,可以在任务管理器里强制关闭相关程序的进程 ...

  2. linux下查看和设置软件的安装路径

    1:你可以通过whereis 软件名来查找系统里的文件位置 比如你想查找eclipse文件,那么就: [root@localhost ~]# whereis eclipse 会显示: eclipse: ...

  3. java比较相等符

    public class Test1 { /** * @param args */ public static void main(String[] args){ int a = 1000, b = ...

  4. js深入研究之神奇的匿名函数类生成方式

    <script type="text/javascript"> var Book = (function() { // 私有静态属性 ; // 私有静态方法 funct ...

  5. 【转】linux下tty,控制台,虚拟终端,串口,console(控制台终端)详解----不错

    原文网址:http://blog.csdn.net/liaoxinmeng/article/details/5004743 首先: 1.终端和控制台都不是个人电脑的概念,而是多人共用的小型中型大型计算 ...

  6. 算法导论(第三版)习题Exercises4.3(第四章三节)算法导论的一个印刷错误

    本节系列证明都可见4.5节需要说明的有4.3-8,4.3-9两题 4.3-8(本题有误) T(n)=4T(n/2)+n2根据4.5理论,结果为Θ(n2lgn) 4.3-9 m = lgn T(2m) ...

  7. FreeBSd ports 安装软件

    1.ports的目录在/usr/ports2.POSTS安装软件有时可能这个包已经安装过了,会有提示,无法 继续安装.能够用提示中的参数:#make install clean FORCE_PKG_R ...

  8. WPF - 如何引用external dll中图片

    前几天一直想引用别的DLL里面的一个图片.总是出现各种各样问题,一气之下将图片拷贝到当前Project中,运行良好.虽然知道引用图片,就1.2.列出来的2点就够了. 1. The Build Acti ...

  9. 小米路由器mini建FTP

    输入命令 df -h 复制代码 查看自己的分区路径,我自己用了一个闲置笔记本电脑硬盘转USB,插到mini,有四个区 为了方便,我选择把ftp安装在第一个分区  /extdisks/sda1/ 创建f ...

  10. java.lang.NoSuchFieldError: deferredExpression解决

       java.lang.NoSuchFieldError: deferredExpression这个问题的出现是在的lib下面有多个版本的jstl.jar包,解决办法很简单,只留下一个版本的jstl ...