• JavaScript必知必会

    普通类
    • 支持
    • 批判
    • 提问
    • 解释
    • 补充
    • 删除
    • JavaScript对象的基本原理

    javascript和其他的面向对象的语言一样,都定义一个根本的object类型。

    对象如何成为对象

    new 操作符和与之相伴的object构造器      var addy=new Object();

    对象的属性

    var ride = new Object();

    ride.make= 'Yamaha';

    ride.model = 'V-Star';

    ride.year = 2005;

    ride.purchased = new Date(2005,3,12);

    可以看出javascript中的实例是属性的集合,每一个属性由名称和值组成。Object实例的主要目的就是用作其他对象的已命名集合

    javascript可以有嵌套,即属性是其他的对象,通过“.”可以访问嵌套的属性,并且嵌套层次无限制

    对于属性的引用,下面三者是等效的   ride.make = ride['make'] = ride[ 'm'+'a'+'k'+'e']

    对象字面量 JSON

    var ride={

    make:‘Yamaha’,

    year:2005,

    owner:{

    name: 'Yolanda',

    occupation:'bounty hunter '

    }

    }

    JSON结构:一对花括号所表示的对象,在其内部列举以逗号分隔的多个属性,用冒号分隔的名称和值来表示每一个属性

    对象作为窗口属性

    把一个引用存储到javascript对象有两种方式:变量和属性

    顶层作用域:在任何包含函数体之外。顶层作用域被认为是window作用域

    • 函数作为一等公民

    函数被认为是对象

    javascript中函数被认为是对象,可以被指派给任何变量和对象的属性等,对待函数与对待其他对象是一样的。

    所以下面三者是等价的:

    • function hello(){ alert(' Hi, There! ');}
    • hello=function(){ alert(' Hi, There! ');}                 //这是函数字面量的写法,可能括号中还有参数
    • window.hello=function(){ alert(' Hi, There! ');}      //即在HTML页面上创建顶层变量时,变量被创建为window实例的属性

    作为回调函数

    function hello(){ alert(' Hi, There! ');}

    setTimeout(hello,5000);     //当计时器过期时函数被调用,因此称为回调函数

    更简洁的写法是:setTimeout( function(){ alert(' Hi, There! ');} ,5000);   可避免产生不需要的名称

    可以看出函数就是被作为一般的对象,还可以被作为其他函数的参数

    this到底是什么

    this的javascript实现不同于面向对象里的this.  前者是所引用的对象被称为函数上下文(不是由如何声明函数而是如何调用函数来决定的),而在后者情况下值引用类的实例。

    javascript提供了显式的方法控制什么被称作函数上下文,通过function方法call()或apply()来调用函数,可以把函数的上下文设置为任何所想要的东西。

    eg   var o2={ handle: 'o2' };  var o3={ handle: 'o3' };

    function whoAmI () {  return this.handle;   };

    alert(whoAmI.call(o2));      //o2 

    alert(whoAmI.apply(o3)); //o3

    所以,是函数如何被调用决定函数上下文

    闭包

    闭包就是function实例,外加对于function实例的执行来说必须的、来自环境的本地变量

    $(function(){

    var local = 1;

    window.setInterval(function(){      //回调函数。回调函数能够有效地引用本地变量是不可或缺的 例如本例中的local。当就绪程序突出后,local声明所在的块超出了作用域,但是函数声明创建的闭包 包括local,因此仍能使用

    $(‘#display’).append('<div>At'+ new Date()+ ' local=' +local+'</div>');

    local++;

    } ,3000);

    });

    • JavaScript基础

    三种消息框:

    警告框           alert("文本")

    确认框            confirm("文本")

    提示框。          prompt("文本","默认值")           经常用于提示用户在进入页面前输入某个值,当提示框出现后,用户需要输入某个值,然后点击确认或取消按钮才能继续操纵,如果用户点击确认,那么返回值为输入的值。如果用户点击取消,那么返回值为 null。

    for...in 语句

    for...in 语句用于对数组或者对象的属性进行循环操作。for ... in 循环中的代码每执行一次,就会对数组的元素或者对象的属性进行一次操作。

    for (变量 in 对象){    在此执行代码}

    处理错误事件的能力

    <html><body><script type="text/javascript">var x=prompt("Enter a number between 0 and 10:","")try{ if(x>10) throw "Err1"        //抛出异常else if(x<0)throw "Err2"} catch(er){if(er=="Err1") alert("Error! The value is too high")if(er == "Err2") alert("Error! The value is too low") }</script></body></html>
    • 遇到的一些问题

    url传参中文乱码问题

    jsp页面传参之前先进行编码:

             var queryName = document.getElementById("queryName").value;      
            var codeQueryName = encodeURI(encodeURI(queryName));

    action中获取值再解码

           if(request.getParameter("queryName")!=null&&!request.getParameter("queryName").equals("")){
                queryStringOriginal=request.getParameter("queryName");
                queryStringOriginal = URLDecoder.decode(queryStringOriginal, "UTF-8");
            }

    • 标签:
    • 属性
    • 对象
    • alert
    • 39
    • var
    • function
    • 函数
    • queryname
    • 变量
    • javascript
    • jquery
  • 加入的知识群:
    学习元评论 (0条)

    评论为空
    聪明如你,不妨在这 发表你的看法与心得 ~



    登录之后可以发表学习元评论
      
暂无内容~~
顶部