`
chillwarmoon
  • 浏览: 153486 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

对于javascript的function的总结

阅读更多

学习知识难免会忘记,关键是在忘记之后,下次遇到时能够通过快捷的方法来回忆,并尽量达到忘记之前的状态。总结也许是日后回忆的一种有效方法,前些日子看了javascript的function,总结如下:

学习function重要的就是明白当程序运行到函数声明的时候,并不执行该函数,当其他函数调用所声明的函数时,该函数才被执行,也就是英文说的function is complied,but not executed until you call it.

再有就是函数在声明时创建变量。例如function(){}就创建了一个变量,虽然这个变量是匿名的。

js 代码
  1. var a=function(){};   
  2.   
  3. var a=function(x,y){}(1,2);   

第一条语句是定义一个匿名function,并将该函数赋给a变量。第二条语句是定义一个匿名function,并调用将该函数的返回结果赋值给a变量。

function add(a,b){};则是定义了一个function,该function的名字是add,相当于一个名为add的变量指向该function。

看看以下代码,感觉挺有意思:

js 代码
  1. function myFunction(){alert("Old");};   
  2.   
  3. var savedFunction=myFunction;   
  4.   
  5. myFunction=function(){alert("New");};   
  6.   
  7. myFunction();   //prints"New"   
  8.   
  9. savedFunction(); //prints"Old"   

在调用myFuction函数的时候,打印出New字符串,代码的第二行明确指出savedFunction=myFunction,但是在调用savedFunction的时候会出现Old字符串,这种情况应该引起java同行的注意,在javascript中,指针指向的是代码片段,执行第二行的时候,savedFucntion指向的是myFuction所指向的代码片段 myFunction code(第一行),然而在第三行myFunction指针由先前的代码片段myFunction code改变为代码片段function(){alert("New")} code的时候,先前的代码片段仍然未消失,被savedFunction所指向,这也就解释了为什么最后程序打印出的字符串仍是Old。

对于Function关键字来说仅在特殊情况下用到,一般就用function,这里就不再介绍了。

prototype属性对于初学js的人来说比较迷惑,这里大致的总结如下:

一般的变量没有prototype属性,constructor function有prototype属性,也就是声明的function(){}变量,js中的每个对象都有一个_proto_和constructor属性,如果一个对象由constructor function生成,例如:

js 代码
  1. function Ball(message){   
  2.   
  3. alert(message);   
  4.   
  5. };   
  6.   
  7. var ball0=new Ball("executing");   

解释以下,最后一行代码等同于:

js 代码
  1. var ball0=new Object();   
  2.   
  3. ball0.construct=Ball;//将属性construct指向代码片段Ball code   
  4.   
  5. ball0.construct("executing"); //执行该代码片段   

接着说,如果一个对象由constructor function生成,则该对象ball0的_proto_属性指向它的构造函数的prototype属性,也就是指向constructor function(这里是前三行代码)所具有的prototype属性,因此凡是用该constructor function生成的对象,都带有该function的prototype属性。

分享到:
评论
3 楼 gatekeeper 2013-01-10  
最后四行代码很有价值
2 楼 wuyan 2007-05-16  
基础知识不能忘
1 楼 sp42 2007-05-05  
对JS function的理解不妨参考下FP(函数式)语言的特点。
“Functional 程序设计的最吸引人注意的地方在于,"函数"现在可以被当作像整数(int)和浮点数(float)一样的数据类型。这就是说,我们可以把函数 func 赋值给一个变量;可以从子程序返回一个函数,就跟返回一个浮点数一样的容易;两个函数可以进行复合运算,就像两个整数可以进行加减乘除运算一样。我们将看到,在 Functional 程序设计里面,"函数"被提升为程序设计语言中的第一等(First Class)的公民,使用"函数"可以像使用整数和浮点数或者是字符串一样的随心所欲;不再象过去,函数只能被调用,没有其它的花样。”
详见:http://jstang.5d6d.com/thread-79-1-1.html

相关推荐

    【JavaScript源代码】JavaScript中条件语句的优化技巧总结.docx

    JavaScript中条件语句的优化技巧总结  对多个条件使用 Array.includes function test(fruit) { if (fruit == 'apple' || fruit == 'strawberry') { console.log('red'); } } 上面的例子看起来不错。然而,...

    JavaScript基础篇(3)之Object、Function等引用类型

    阅读目录 Object类型 1、通过构造函数来创建 2、通过字面量表示法来创建对象 Array类型 同样Array也有两种创建方式: ...我们在《一步步学习javascript基础篇(1):基本概念》中简单的介绍了五种基本数据类型Undef

    javascript function、指针及内置对象

    该文摘自于匿名教程总结,希望对初学js的同学有帮助,因为它解决了我学习js的众多迷惑。。。

    javascript 常用功能总结

    1.路径符号的含义 src=”/js/jquery.js”、”../”这个...获取网站的根目录 代码如下: function GetRootPath() { var strFullPath = [removed].href; var strPath = [removed].pathname; var pos = strFullPath.indexO

    JavaScript王者归来part.1 总数2

     1.1 为什么选择JavaScript?   1.2 JavaScript的应用范围   1.3 JavaScript的版本   1.4 一些值得留意的特性 禁忌及如何突破这些禁忌   1.5 安全性和执行效率   1.6 一个例子--JavaScript编写的计算器 ...

    JavaScript 中定义函数用 var foo = function () {} 和 function foo()区别介绍

    某天写代码突然县道这个问题,顺势总结一波 JavaScript 函数和变量声明的“提前”(hoist)行为 简单的说 如果我们使用 匿名函数 var a = {} 这种方式, 编译后变量声明a 会“被提前”了,但是他的赋值(也就是a)并...

    总结常用JavaScript语法107条

    1.输出语句:document.write("") 2.JS中的注释为:// ...4.一个浏览器窗口中的DOM顺序是:window->...7.JS中的值类型:String,Number,Boolean,Null,Object,Function 8.JS中的字符型转换成数值型: parseInt(),parseFloat()

    Javascript数组操作高级心得整理

     总结(使用哪种方式好) 18 2. 修改对象 18 (1) 创建新方法 18 (2) 重命名已有方法 19 (3) 添加与已有方法无关的方法 19 (4) 为本地对象添加新方法 19 3. 对象类型转换 19 (1) 转换成字符串 19 (2) 转换成数字 20 ...

    javascript实现回车键提交表单方法总结

    本文实例总结了javascript实现回车键提交表单方法。分享给大家供大家参考。具体分析如下: 第一种方法:javascript实现 代码如下:<html> <head> <title> javascript 实现回车键提交表单</...

    javascript常见用法总结

    js解码和编码.html 代码如下: <!... <head> <... charset=utf-8″ /> <...javascript的编码和解码<... [removed] function gel(id) { return document.getElementById(id); } [removed] = functi

    总结javascript中的六种迭代器

    1.forEach迭代器 forEach方法接收一个函数作为参数,对数组中每个元素使用这个...every方法接受一个返回值为布尔类型的函数,对数组中的每个元素使用这个函数,如果对于所有的元素,该函数均返回true,则该方法返回true

    JavaScript中object和Object的区别(详解)

    这个问题和我之前遇到的问题非常相似,我认为这里有两个问题需要解决,一个是运算符new的作用机制,一个是function关键字和Funtion内置对象之间的区别。看了一些前辈的博客和标准,这里帮提问者总结一下。 1、new ...

    Javascript经典学习笔记

    javascript经典学习笔记总结,介绍几本数据类型,Function对象原理,js中没有类的概念,类继承的多种方式的总结,很不错,欢迎下载。

    javascript中数组array及string的方法总结

    一、array的方法总结 会更改原来的的数组 push、unshift方法,返回length。增加值得就返回length,其他返回该元素 pop,shift返回该元素 reverse返回该元素 splice(start,deleteCount,addItem…),从原数组中删除和增加...

    JavaScript判断输入是否为数字类型的方法总结

    JavaScript判断输入是否为数字类型的方法总结 前言 很多时候需要判断一个输入是否位数字,下面简单列举集中方法。 第一种方法 isNaN isNaN 返回一个 Boolean 值,指明提供的值是否是保留值 NaN (不是数字)。  ...

    javascript 产生随机数的几种方法总结

    javascript 产生随机数的几种方法总结 1、取两个数之间的随机数 function GetRandomNum(Min,Max){ var Range = Max - Min; var Rand = Math.random(); return(Min + Math.round(Rand * Range)); } 2、混合法 ...

    基于javaScript的this指向总结

    在javascript中this的指向一直是前端同事的心头病,也同时是各面试题的首选,现在我们就来总结一下js中this的指向。首先需要了解一下几个概念: 1:全局变量默认挂载在window对象下 2:一般情况下this指向它的调用者 3...

    Functional-Programming-in-[removed]JavaScript 函数式编程的完整总结

    JavaScript 中的函数式编程 作者支持创建更多教育材料更多材料在本文中,我将尝试帮助您很好地理解 JavaScript 最常见的特性,函数式编程。 函数式编程允许您编写更短的代码、干净的代码,还可以解决传统方法可能...

    JavaScript实现Ajax总结

    ajax应用非常普及,ajax的优点大家都知道,具体就不多说了,其缺点还真不少,比如...以上就是Ajax的实现步骤,接下来简单分步总结下。 首先是关于xrh对象的建立。 function creatXhr(){ var xhr=null; if(window.XML

    JavaScript知识点总结之如何提高性能

    JavaScript的性能问题不容小觑,这就需要我们开发人员在编写JavaScript程序时多注意一些细节,本文非常详细的介绍了一下JavaScript性能优化方面的知识点,绝对是干货。 ...引用类型object function

Global site tag (gtag.js) - Google Analytics