javascript

为什么使用javascript:javascript是所有浏览器唯一支持的通用语言

javascript由ECMAScpipt,dom,bom共同组成;

 

ECMAScript是标准化的,独立于宿主环境的 编程语言规范(ECMA标准)

dom是操作xml(html)的程序模型,它本身是独立于宿主环境,但是要由某种语言来实现如:ECMAScript语言实现(w3c标准)

bom是浏览器宿主环境对象模型,它是对ECMAScript的扩展,但没有被标准化,是特定的浏览器宿主环境提供的与浏览器交互的对象(浏览器开发厂商不统一,不同浏览器中的bom不完全相同)

 

1.ECMAScript

   是ISO的标准语言;

   ECMAScript只描述:语法 类型 语句 关键字 保留字 运算符 对象;

   是独立于宿主环境(浏览器)的一种语言规范;

   是可以宿主到很多环境包括 web浏览器(最早的宿主环境)中是javascript

                                         flash中是actionscript

                                         nombas中是scriptease;

 

   每种宿主环境都实现ECMAScript并且扩展ECMAScript;

   当前浏览器的ECMAScript是 ECMA-262第三版 

 

   1.1 语法

         区分大小写;

         弱类型;

         分号可有可无;

         变量:

              基本类型: string,number,boolean,null,undefined

                            "123",123,true,null,undefined

              引用类型: String,Number,Boolean,Object(相当于java.lang.Object)

                            new String("123"),new Number(123),new Boolean(true),new Object();

 

                typeof "11" = "string"                               typeof new String("11") = "object"

                typeof  123 = "number"                            typeof new Number(123) = "object"

                typeof  true ="boolean"                            typeof new Boolean(true) = "object"

                typeof  undefined="undefined"                 typeof ref_object = "object"

                typeof null= "object"

 

 

            特殊 typeof function(){}= "function"

                    typeof new Function()="function"

                         

         运算符:delete 是删除一个对象的属性,如: delete ("123".length);

                    ==与!=处理原始值(会类型转换)

                    !==与===的处理引用对象(不会类型转换)

 

 

    1.2 对象描述:对象是属性的无序集合,对象的每个属性存放一个基本类型或一个对象或一个函数(函数也是对象)

 

          js中任何变量函数是一个对象.

          var a=1;                                         // a是对象    是Number类对象

 

          var b=new Object();                      //  b是对象    是Object类的对象

 

          function c(){                                  //  c是对象   是Function类的对象  c就是函数

                //...

           }

 

           var  d=function(){                         // d是对象   是Function类的对象  d就是函数 

               //...

            }

 

           function ClassE(){                         // ClassE是对象   还是类定义 ClassE就是函数

            //...                          

            }

 

          总结:js中任何东西都是对象 变量:一定是某个类的对象,也一定是某个方法的一个实例(类定义与方法定义相同);

                                                  函数:一定就是Function类的对象;

                                                  类定义:就是函数定义,也就是Function类的对象

                   js的核心是函数

                   js开发要放弃一部分oo语言的思维,要更加开放,不纯粹的oo语言

 

                   function fun(a1,a2,a3,a4){}

                   fun.length  //外部fun.length表示参数的个数

                   arguments //内部arguments表示参数的个数

   1.3 对象分类:

                      本地对象:独立于宿主环境的ECMAScript对象,需要用户来实例化

                                   Object,Function,Array,String,Boolean,Number,Date,RegExp,Error,

                                   EvalError,RangError,ReferenceError,SytaxError,TypeError,URIError)

                      内置对象:独立于宿主环境的ECMAScript对象,不需要用户来实例化,ECMAScript执行时环境生成就有

                                   Global(js中就是window?),Math

                      宿主对象:bom对象,dom对象 

 

                      所有内置函数,类型,类在js中都是window的属性或方法

 

   1.4 js中在全局范围中定义的任何var都是给window对象在添加属性,即:

          var a=1<==>window.a=1;

 

          js中在全局范围中定义的任何函数都是给window对象在添加方法,即: 

          function A(){} <==>window.A=function(){}

 

          这样以来可以这样认为 在全局范围中执行的代码都可以认为是window对象的方法调用。

                                         在全局范围中this===window。

          js中:this总是指向调用当前this所在函数的对象;

          java c++ c# 中:this 是方法的当前对象

          对象方法的内部引用对象的属性一定要用this,否则会当作全局变量

 

   1.5 面向对象编程

 

         创建类

         function Base(){

         this.a=xxx;

         this.b=xxx;

         this.c=xxx;

         ...

         }

         Base.prototype.m1=function(){}

         Base.prototype.m2=function(){}

         ...

 

 

         创建子类(本地类和宿主类不能作为继承的基类)

         function Sub(){

         Base.call(this);           //call apply 都是用一个对象镜调用一个函数,就好像这个函数是这个对象的方法一样

 

         this.d=xxx;

         this.e=xxx;

         this.f=xxx;

         ...

        }

        Sub.prototype=new Base();                //prototype是Function对象的一个属性,继承时,prototype指向的所                                                                        有属性和方法都会传递给子类的所有对象

        Sub.prototype.constructor=Sub;

        Sub.prototype.m3=function(){}

        Sub.prototype.m4=function(){}

        ...

 

        继承框架:

 

        Function.prototype.extends=function(parent){

        this.prototype=new parent();

        this.prototype.constructor=this;

        }

 

       使用:

       function Sub(){

         Base.call(this);

         this.d=xxx;

         this.e=xxx;

         this.f=xxx;

         ...

        }

       Sub.extends(Base);

       Sub.prototype.m3=function(){}

       Sub.prototype.m4=function(){}

 

 

 

    String.ptototype=="";String.prototype.constructor==String;

    Number.prototype==0;Number.prototype.constructor==Number;

    Boolean.prototype==false;Boolean.prototype.constructor==Boolean;

    Date.prototype==1970.....;Date.prototype.constructor==Date;

 

    内置类型的原型就是该类型的一个默认值对象,构造函数还是该类函数

 

 

    function ClassA(){}

   

    ClassA.prototype== new Object();

    ClassA.prototype.constructor==ClassA

 

    自定义类型的原型就是一个简单的对象,但构造函数还是这个类函数

   

 

 

 

2 bom:浏览器宿主环境中的浏览器对象的模型

   bom的核心是window对象,所有其他的bom对象都直接或间接是window对象的属性

   document:anchors forms images links location

   frames

   history

   location

   navigator

   screen

 

   document既是bom又是dom

3 dom:宿主环境中xml对象模型,将xml(html描绘成节点组成的文档结构)

 

           包括 dom core和dom html

           dom core:访问和操作基本的xml结构(与其他语言环境的api基本一致)

           dom html:对xml文档中的html操作(样式,事件,访问 有html对象自己的方法和属性)

           html是特殊的xml 

 

           <html>

           <><></><></></>

           <></>

           </html> 

           html是document的根元素是document元素

           document既是bom又是dom

          js事件:dom的一部分是 (dom html)的重要部分

          鼠标事件:html目标对象(bom,dom)被点击类

                       click dbclick mousedown mouseout mouseover mouseup mousemove

                       所有html元素都支持鼠标事件

          键盘事件:html目标对象(bom,dom)被键盘输入类

                       keydown keypress keyup

          html事件:html目标对象(bom,dom)上产生事件类

                        window frame iframe img object 有load unload abort error事件

                        input textarea                             有select事件

                        input textarea select                   有change事件

                        form                                            有submit reset 事件

                        任何html元素                                 有focus blur

 

           <script></script>:也是dom的一部分,所以在页面加载时是顺序加载的

                                        <html>

                                        <head>

                                        <script src="xxx.js">

                                        </script>

                                        </head>

                                        <body>

                                        <script>

                                         alert("123");

                                        </script>

                                        <h1>test</h1>

                                        </body>

                                        </html>

                                        在输出test之前会先弹出"123"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值