博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript 高级篇之函数 (五)
阅读量:5221 次
发布时间:2019-06-14

本文共 3393 字,大约阅读时间需要 11 分钟。

高级篇

本节我将分享我对函数,嵌套函数,作为数据的函数,作为对象的函数等!

1、函数的创建

由于前面已经用了很多的函数,我就不在这里多分享了。

2、嵌套函数

function china() {
function people()//嵌套函数,只有china用它 {
document.write("我的心愿是当杜甫,最近网上他的漫画,他活的好潇洒"); } people(); }

 3、函数的直接量

 Javascript允许函数用直接量来定义,说白了就是一个表达式,(匿名函数)。细节:匿名函数以后会用,要明白!

function china(people) //函数声明 {
return peole; } var fun = function(people){
return people;};//通过表达式声明。效果等同

4、函数的参数(这里大家要注意)

当你调用一个函数的参数少于声明的参数个数是,其它的参数就是一个undefined的值。

//打印函数 function displayArray(arr) {
if(!arr)return; for(var num =0;num
"); } var array = [2,32,14,57,6]; function borrowArray(from,/*optional*/to) {
if(!to) to = []; //to = to||[] 效果是等同的 for(var element in from) //使用枚举遍历数组 to.push(from[element]);//将元素添加到数组 return to;//返回 } var returnnumber = borrowArray(array);//执行 displayArray(returnnumber);//打印 //输出:Num is 2 Num is 32 Num is 14 Num is 57 Num is 6

5、可变的参数(Arguments 对象)

第一次看到这里我也晕了,怎么参数还变的呢,多白了,这个argument对象就是函数参数的管理者,比如你有一个函数,定义了3个参数,那argument就有一个和你定义的参数,一样的数据集。
 要注意:arguments标识符在函数体内才有效的。你也可以就把它当成是函数的属性吧!

function checkArgument(x,y,z) {
if(arguments.length != 3) throw new Error("参数不匹配"); //检查参数是否合法,挺好用吧! return x+y+z; }

下面的例子是一个比较数字大小的例子,参数是可以变的。

function compareMaxNumber() {
var temp = Number.NEGATIVE_INFINITY;//表示javascript最小的复数 for(var arg=0;arg
temp) temp = arguments[arg]; } return temp; //返回参数中最大的数字 } document.write(compareMaxNumber(2,34,5,23,766,1000)+"
");//这里的参数可以有很多,输出1000

 6、将对象属性作为参数

function displayArray(arr) //打印函数 {
if(!arr)return; for(var num =0;num
"); } // function copyArray(from,from_start,to,to_start,length)//复制数组 {
for(var i = from_start; i

6、作为数据的函数

function add(x,y){
return x + y;} function multply(x,y){
return x*y;} function cut(x,y){
return x -y ;} operator(operator1,operator2,operator3)//接收3个参数,可以把函数作为参数使用。 {
return operator1(operator2,operator3);//执行的是add(); } document.write(operator(add,operator(multply,2,4),operator(cut,12,2)));//输出18了

7、作为方法的函数

这里说的方法不过就是把函数存储在对象的属性里面,然后通过属性来调用,函数可以赋给任何变量。

var obj = {}; function display() //(something) 带参数 {
return "Love";//something; } obj.method = display;//使用对象的直接量赋值。 obj.method();//调用。obj.method("Love");

其实javascript也引用了this关键字。大家要记住其实调用方法的对象就是this的值。Object.method(); 这里Object就是对象,自然也就this的值了。

var privatename = {name:"Frank", age:21, sex:'男', display:function() {document.write("my name is:"+this.name+"\t age :"+this.age)}}; privatename.display(); //输出 name is:Frank age :21

8、构造函数

构造函数是初始化一个对象的属性,并专门和new运算符一起使用的构造函数,new运算符创建一个对象,然后调用构造函数,把新创建的对象当this的值来传递,赋值。(要能理解)

function createProperty(name,version)//构造函数 {
this.name = name; this.version = version; } var tools = new createProperty("Multply",1.0);初始化,工具的名称,版本

9、定义函数的属性

当你需要使用一个全局不变值时,使用Function对象的属性将会很方便(以后创建命名空间,类的属性,其实都是寄托在这个上面

createNamespace.name = "360buy.define"; createNamespace.version = 1.2; function createNamespace() {
document.write("名称空间:"+createNamespace.name +"版本:" + createNamespace.version); } createNamespace();//输出:名称空间:360buy.define版本:1.2

10、方法apply()和call()

使用这两个方法可以像调用其它对象的方法一样调用函数,两个方法第一参数都是要调用的对象,后面的参数是要调用的函数参数。

function applyCallOperator(args,args2) {
document.write(args+"
"); } var objpeople = {}; applyCallOperator.apply(objpeople.Frank,[3,4]);//等同 applyCallOperator.call(objpeople.Frank,3,4) 前面就多[] objpeople.Frank();

小结:这篇就像大家分享到这来吧,下一篇我们一起实现javascript类。
 

转载于:https://www.cnblogs.com/ben2012/archive/2012/04/01/2427101.html

你可能感兴趣的文章
Software--Architecture--DesignPattern IoC, Factory Method, Source Locator
查看>>
poj1936---subsequence(判断子串)
查看>>
黑马程序员_Java基础枚举类型
查看>>
[ python ] 练习作业 - 2
查看>>
一位90后程序员的自述:如何从年薪3w到30w!
查看>>
在.net core上使用Entity FramWork(Db first)
查看>>
System.Net.WebException: 无法显示错误消息,原因是无法找到包含此错误消息的可选资源程序集...
查看>>
UIImage 和 iOS 图片压缩UIImage / UIImageVIew
查看>>
MongoDB的数据库、集合的基本操作
查看>>
ajax向后台传递数组
查看>>
疯狂JAVA16课之对象与内存控制
查看>>
[转载]树、森林和二叉树的转换
查看>>
WPF移动Window窗体(鼠标点击左键移动窗体自定义行为)
查看>>
软件测试-----Graph Coverage作业
查看>>
django ORM创建数据库方法
查看>>
创建Oracle synonym 详解
查看>>
php7 新特性整理
查看>>
RabbitMQ、Redis、Memcache、SQLAlchemy
查看>>
linux查看端口占用
查看>>
hdu - 1226 超级密码 (bfs)
查看>>