JavaScript学习笔记【五】

JavaScript的引用类型-Function

  一、Function

    1.函数的声明和函数表达式、

    在JavaScript中、Function也是一种类型、所有定义的函数都是Function类型的、

     

     alert(sum(10, 1));

     function sum(val1, val2) {

      return val1 + val2;

     }

     上边的方法不会报错、因为JavaScript的执行环境会把函数的声明提前、而下边的函数表达式会报错、因为在执行alert的时候、sum还没有获得函数的引用、

     也就是JavaScript的执行环境只会把函数的声明提前、而不会将赋值提前

     alert(sum(10, 1));

     var sum = function(val1, val2) {

      return val1 + val2;

     };

     还有一种的函数的创建方式、在这里并不建议使用这种方式、由于这种方式需要一次解析和一次运行因此也会降低JavaScript的性能、

     var function = new Function(‘val1‘, ‘val2‘, ‘return val1 + val2‘);          //最后一个参数为方法体、前边的都是该方法的参数、

    2.函数可以作为值进行传递、

    函数名存储的是对函数的引用、

    function sum (val1, val2) {

      return val1 + val2;

    }

    function callFunction(func, num1, num2) {

      return func(num1, num2);

    }

    3.函数的内部属性

    函数内部有两个特殊的对象arguments、和this

    arguments是函数的参数组成的数组、

    function sum(num1, num2) {

      return arguments[0] + arguments[1];   //此处的arguments[0]和arguments[1]分别代表num1和num2、

    }

    arguments还有一个属性callee、这个属性是一个指针、指向了arguments所在的函数、即sum函数、

    function factory (num) {

      if(num < 0) {

        return 0;

      } else {

        return num + arguments.callee(num - 1);    //此处我们使用callee、当我们想把factory函数名换掉时就不用担心函数的内部的问题了、

      }

    }

    this是函数内部另一个特殊的对象、this对象引用的是函数所依赖的执行环境的对象、

    var window.color = ‘red‘;

    var o = {color : ‘blue‘};

    function sayColor() {

      alert(this.color);

    }

    sayColor();   //‘red‘

    o.sayColor = sayColor;

    o.sayColor();   //‘blue‘;

    4.函数的属性和方法、length、prototype

    function sum(num1, num2) {

      return num1 + num2;

    }

    alert(sum.length);   //length 代表函数sum的参数的个数、

    函数的prototype属性保存了所有sum实例的方法、例:var s = new sum();则对象s的属性和方法都是指向了sum的prototype属性中的方法、

    【注】ECMAScript 5还定义了一个新的额方法、这个方法创建一个函数的实例、其this值会被绑定到传给bind函数的值、

    var o = {color:‘blue‘};

    function sayColor() {

      alert(this.color);

    }

    sayColor = sayColor.bind(o);

    sayColor();   //‘blue‘

    bind函数并不会改变原有sayColor对this的应用、而是返回的函数将this指向了o、

时间: 2024-10-20 19:56:20

JavaScript学习笔记【五】的相关文章

前端乱煮之javascript学习笔记五

1 window对象: 所有浏览器都支持window对象,它表示浏览器窗口.所有javascript的全局对象.全局函数以及变量都自动成为window对象的成员.全局变量是window对象的属性,全局函数是window对象的方法. 确定浏览器可视窗口的尺寸大小(除去工具栏和滚动条)的三种方法: (1)window.innerHeight 得到浏览器的可视高度,window.innerWidth得到浏览器的可视宽度.(Internet Explorer.Chrome.Firefox.Opera 以

JavaScript学习笔记五:变量、作用域和内存问题

1.ECMAScript变量可能包含两种不同数据类型的值:基本类型值和引用类型值.在很多语言中,字符串以对象的形式来表示,因此被认为是引用类型的,ECMAScript放弃了这一传统. 2.从一个变量向另一个变量复制基本类型的值,会在变量对象上创建一个新值,然后把该值复制到为新变量分配的位置上,两个变量值操作不会相互影响. 3.从一个变量向另一个变量复制引用类型的值时,存储在变量对象中的值复制一份放到为新变量分配的空间中,不同的是,这个值的副本实际上是一个指针,而这个指针指向存储在堆中的一个对象,

javascript学习笔记(五)

第一步,实现demo样式 <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <title>鼠标移入/移出改变样式</title> <style> body{color:#fff;font:12px/1.5 Tahoma;} #div1 {width:150px;height:150

WEB前端学习笔记 五

接web前端学习笔记第四篇,此篇为web学习笔记 五,在此感谢您的采集和转发,但请注明文章出自网知博学. 2.0.3  html标签的属性格式 现在我们知道了两个双标签分别是,标题标签:<h1> - <h6>.和段落标签:<p></p>还知道了一个换行的单标签:<br />,现在我们给<p></p>标签添加一个属性,来改变段落是右对齐,还是左对齐,还是居中. 如上图,<p>标签中的 align(中文就是排列的意

javascript学习笔记之时间定制器

时间间隔定制器 单次定制 setTimeout() 函数 setTimeout("操作",时间); eg:setTimeout("alert('五分钟后显示',5*60*1000); 多次定制 setIntervar()函数 setIntervar("操作",间隔时间); eg:setIntervar("alert('每间隔五分钟显示',5*60*1000); javascript学习笔记之时间定制器

jQuery源码学习笔记五 六 七 八 转

jQuery源码学习笔记五 六 七 八 转 Js代码   <p>在正式深入jQuery的核心功能选择器之前,还有一些方法,基本都是数组方法,用于遴选更具体的需求,如获得某个元素的所有祖选元素啦,等等.接着是其缓存机制data.</p> <pre class="brush:javascript;gutter:false;toolbar:false"> //@author  司徒正美|なさみ|cheng http://www.cnblogs.com/ru

Javascript 学习笔记 2: 标识语句

可以在任何语句声明之前使用唯一标识(identifier)和冒号(:)用来标记该语句: identifier: statement 这样,你可以在程序的任何其他地方通过标识来使用这个语句.即使在语句内部也可以使用该语句的标识(例如:循环语句和条件语句).当在一个循环语句前添加一个标识,你可以在语句内部通过break 标识来退出当前循环,也可以通过continue标识来继续执行该语句.例如: mainloop: while(token != null) { // Code omitted... c

Caliburn.Micro学习笔记(五)----协同IResult

Caliburn.Micro学习笔记(五)----协同IResult 今天说一下协同IResult 看一下IResult接口 /// <summary> /// Allows custom code to execute after the return of a action. /// </summary> public interface IResult { /// <summary> /// Executes the result using the specif

javascript学习笔记---ECMAScript-判断变量类型

判断类型之前,先要清楚有哪些类型. (理理思路:程序由数据和方法构成,数据由简单数据和复杂数据构成) 即类型有: 数据(简单数据:boolean,string,num,undefined,null.复杂数据:object), 方法(function) 万能的typeof,神一样的方法 typeof(1);// num typeof("hello");// string   typeof(false);// boolean var vFlag; typeof(vFlag);// unde

javascript学习笔记---ECMAScript语法(引用类型)

引用类型通常叫做类(class). 本教程会讨论大量的 ECMAScript 预定义引用类型. 引用类型 引用类型通常叫做类(class),也就是说,遇到引用值,所处理的就是对象. 本教程会讨论大量的 ECMAScript 预定义引用类型. 从现在起,将重点讨论与已经讨论过的原始类型紧密相关的引用类型. 注意:从传统意义上来说,ECMAScript 并不真正具有类.事实上,除了说明不存在类,在 ECMA-262 中根本没有出现"类"这个词.ECMAScript 定义了"对象定