jsp函数的使用
在这篇博客里面谈一谈jsp函数的一些使用规则
1.在jsp里面,函数和类是等价的,因为在函数的内部可以定义函数和变量。定义在函数内的函数和变量分为实例属性、实例函数、类属性、类函数。实例和类是面向对象的概念
实例属性是属于单个对象的,所以必须通过实例对象来访问。类属性是属于整个类的(也就是整个函数的),因此必须通过类(函数来访问)。如果用实例对象的名字来访问类属性,那么将返回undefined,因为这样就相当于为对象实例新增了一个和函数实例同名的属性。虽然对象实例不能访问类属性,但是可以通过在定义对象的时候修改类属性的值。
//类属性和实例属性的使用
function Person(national,age)
{
this.age = age;
Person.national = national;
var local_var;//
} //创建第一个实例对象
var first = new Person('中国',19);
with(document)
{
writeln("第一个对象的属性:"+"<br>");
writeln("用对象名来调用属性:"+first.age +" "+first.national+" "+first.local_var+"<br>");
writeln("用类名来调用属性:"+Person.age+" "+Person.national+" "+Person.local_var+"<br>");
} //创建第二个实例对象
var second = new Person('美国',20);
with(document)
{
writeln("第二个对象的属性:"+"<br>");
writeln("用对象名来调用属性:"+second.age +" "+second.national+" "+second.local_var+"<br>");
writeln("用类名来调用属性:"+Person.age+" "+Person.national+" "+Person.local_var+"<br>");
} //创建第三个实例变量
var third = new Person('韩国',21);
with(document)
{
writeln("再次调用类属性:"+Person.national+"<br>");
}
2.jsp函数的独立性
虽然jsp中的函数是属于某个对象的,但是并不是只有函数所属类的对象才能调用该函数,其他对象也能调用该函数。调用函数需要使用call()或者apply()方法。调用的语法为:函数名.call(调用对象,参数1,参数2...)。call()和apply()的不同点在于call()需要把函数的所有参数一个一个的列出来,而apply()方法需要把函数的参数以数组的形式列出来。
function test(name)
{
this.name = name;
//定义匿名函数的时候一定要在最后加;
this.inf = function(a,b)
{
document.writeln("我的name是"+a+b);
};
};
var p = new test();
var name = "hello";
p.inf.call(window,"date","ketty"+"<br>");
p.inf.apply(window,["web","ok"+"<br>"]);//想要在apply()方法里面换行,必须把换行符写到数组里面

3.jsp函数参数的传递和鸭子理论
jsp是一种弱类型的语言,函数参数的传递没有严格的要求。调用函数的时候,实参的个数可以少于形参的个数,未传入实际值的参数系统会为其赋值为undefined。
因此,在函数的定义中最好有对参数类型的检测处理,防止程序出现异常的错误。这就是鸭子理论。判断参数类型的时候,我们通常要用到typeof()和instance()这两个函数。typeof用以获取一个变量或者表达式的类型,typeof一般只能返回如下几个结果:
number,boolean,string,function(函数),object(NULL,数组,对象),undefined。
很明显,typeof()有很强的局限性。当要具体的判断某个对象是否为某个类的实例变量的时候,就要用到instance()方法了。
//函数参数类型的判断函数对参数进行逻辑操作之前必须先对参数类型进行判断鸭子理论
function changeAge(person)
{
if(typeof person == 'object' && typeof person.age=='number')
{
document.write("函数执行前的age:"+person.age+"<br>");
person.age=10;
document.write("函数执行中的age:"+person.age+"<br>");
}
else
{
document.write("参数类型不符合"+typeof person+"<br>");
}
}
//采用不同的方式调用changeAge()函数
changeAge();
changeAge('xxx');
changeAge(true);
p0={abc:34};
changeAge(p0);
p={age:25};
changeAge(p);

4.函数的protype属性
函数的使用规则/call/apply/函数的独立性/函数参数的传递/函数的重载/鸭子理论/prototype方法动态增加方法和属性
jsp函数的使用的更多相关文章
- 将请求挂载至WEB页面
有两种方式 1.使用标准的方式,在某个菜单下面直接加入标准功能 提交请求(FEM_FWK_SUBMIT_REQ),然后即可在页面上提交请求. 2.将指定请求定义成功能,在WEB页面使用功能直接提交指 ...
- project1
知识漏洞 有空就默写一下-.- [概念] 要好好理解并且背下来记住 MVC要分开,Servlet里面不处理计算的逻辑,只有调用函数(是不是变量传进来以后,调用都不能有呢?) clear map不能直 ...
- JavaWeb高级编程(下篇)
Java标准标签库 JSP标签语法中包含一些简写可以帮助轻松编写JSP.这些简写中第一个就是taglib指令. <%@ taglib prefix="c" uri=" ...
- jsp中出现onclick函数提示Cannot return from outside a function or method
在使用Myeclipse10部署完项目后,原先不出错的项目,会有红色的叉叉,JSP页面会提示onclick函数错误 Cannot return from outside a function or m ...
- 关于JSP中<body onload="fun()">body标签中onload中函数不执行问题
问题描述: 在一个页面中,我们经常会初始化一下数据,而且会在指定的DOM元素初始化数据,这时候我们就会使用<body onload="fun()">来加载我们的数据.o ...
- JSP页面JSTL提供的函数标签EL表达式操作字符串的方法
首先在jsp页面导入标签<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions&quo ...
- 重温JSP学习笔记--El函数库
EL函数库(由JSTL提供的) * 导入标签库:<%@ tablib prefix="fn" uri="http://java.sun.com/jsp/jstl/f ...
- 11 JSP/EL表达式/EL函数
JSP * 概述: JSP(Java Server Pages)与Java Servlet一样,是在服务器端执行的不同的是先由服务器编译部署成Servlet执行 * JSP的运行原 ...
- 自定义JSP中的Taglib标签之四自定义标签中的Function函数
转自http://www.cnblogs.com/edwardlauxh/archive/2010/05/19/1918589.html 之前例子已经写好了,由于时间关系一直没有发布,这次带来的是关于 ...
随机推荐
- homebrew & brew cask使用技巧及Mac软件安装
homebrew 安装 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/m ...
- android登录实现,存储数据到/data/data/包名/info.txt
1.一个简单登录界面布局代码如下: @1采用线性布局加相对布局方式 @2线性布局采用垂直排列 <?xml version="1.0" encoding="utf-8 ...
- Oracle数据库和客户端字符集
1.查看数据库字符集信息 SQL> select * from nls_database_parameters;其中,NLS_CHARACTERSET是当前数据库的字符集. 2.客户端字符集 客 ...
- Xmanager连接到RedHat Enterprise Linux 6.8
RedHat Enterprise Linux 6 配置Xmanager ,实现图形界面连接 X是用在大多数UNIX系统中的图形支持系统.如果你在你的Linux机器上使用GNOME或者KDE的话,你就 ...
- centos6.7下安装mysql5.6.22同时解决中文乱码问题
1.下载 http://dev.mysql.com/downloads/mysql/ 或者使用wget下载: wget http://dev.mysql.com/get/Downloads/MySQL ...
- @JsonIgnoreProperties忽略转换到json的属性
bean转换到json忽略指定属性 @JsonIgnoreProperties(value={"attrName"})
- shell中source与sh区别
shell中使用source conf.sh,是直接运行conf.sh的命令,不创建子shell,类似与html中include,而sh是则创建子shell, 子shell里面 的变量父shell无法 ...
- [leetcode-500-Keyboard Row]
Given a List of words, return the words that can be typed using letters of alphabet on only one row' ...
- keyStore很重要,千万不能丢失
打包apk的时候需要对apk文件进行签名,如果想要自己给apk签名那么就要自己创建keystore.1.签名的意义为了保证每个应用程序开发商合法ID,防止部分开放商可能通过使用相同的Package N ...
- touchmover手机移动端的拖动
<!DOCTYPE html><html> <head> <meta charset="utf-8"> <meta name= ...