javascript——对象的基本概念(二)

一、创建函数

函数是一种对象:Function类 是对象,可以通过 Function 实例化一个函数,不过最多的还是利用 function 来创建函数。

方式一:利用 Function类 来实例化函数:

1 var people=new Function("name","sex","if (sex==‘男‘)  return  name+‘先生: 您好!‘;  else   return name+‘女士: 您好!‘;");
2 people(‘小强‘,‘男‘)    //"小强先生: 您好!"

Function类 实例化函数

语法格式:var function_name = new function(arg1, arg2, ..., argN, function_body)

  • 参数中前 n 个为函数的形参,最后一个为函数的函数体(执行部分);

方式二:利用 function 来创建函数,语法如下:

var a= function (参数1,参数2……){}

或  function a(参数1,参数2……){}

例:

1     function people(name,sex)
2         {
3             if (sex==‘男‘)
4                   return name+‘先生: 您好!‘;
5             else
6                 return name+‘女士: 您好!‘;
7         }

创建方法

注意以下问题:

  • 当设定参数而忘记调用参数时,javascript引擎将自动传递一个 undefined 的参数;
  • 当传递的参数超出设定参数个数时,多余的部分将自动忽略;
  • javascript通过一个 arguments 对象自动管理函数接受的参数,该对象类似于一个数组。

由以上两种方式可以看出,创建的函数最终是一样的,务必记住一点函数是一种对象,其是引用类型。

二、javascript中的变量

javascript中的变量分为局部变量和全局变量。

1、局部变量: 在函数内部以 var 声明的变量,只能在函数内访问,函数运行完毕会删除局部变量;

2、全局变量:

  • 在函数外声明的变量是全局变量,网页上的所有脚本和函数都能访问它。
  • 在函数内部未使用var 声明的变量也是全局变量,如 carname="Volvo";但是这种全局变量只有在执行所在函数后才能在全局范围内访问。

三、函数相关的属性:

1、arguments:访问函数的输入参数,由脚本解释器自动创建,具有length属性,类似于数组,可以用数组的方法访问每个参数。

例1:

 1     function people(name,sex)
 2         {
 3
 4             if (sex==‘男‘)
 5                   return name+‘先生: 您好!一共有 ‘+arguments.length+‘ 个参数‘;
 6             else
 7                 return name+‘女士: 您好!一共有 ‘+arguments.length+‘ 个参数‘;
 8         };
 9     people(‘小强‘,‘男‘);    //"小强先生: 您好!一共有 2 个参数"
10     people(‘小丽‘,‘女‘);    //"小丽女士: 您好!一共有 2 个参数"

arguments使用例子 1

例2:

 1     function people(name,sex)
 2         {
 3
 4             if (sex==‘男‘)
 5                   return arguments[0]+‘先生: 您好!一共有 ‘+arguments.length+‘ 个参数‘;
 6             else
 7                 return arguments[0]+‘女士: 您好!一共有 ‘+arguments.length+‘ 个参数‘;
 8         };
 9     people(‘小强‘,‘男‘);    //"小强先生: 您好!一共有 2 个参数"
10     people(‘小丽‘,‘女‘);    //"小丽女士: 您好!一共有 2 个参数"

arguments使用例子 2

例3:

结果如图:

 1         function sum(v1,v2)
 2         {
 3             document.writeln(‘////////////////////////////////////////////////////////////////////////‘);
 4             document.writeln(‘<br>调用参数:<br>‘);
 5             document.writeln(‘参数有 ‘+arguments.length+‘ 个:<br/>‘);
 6             var s=0;
 7             for(var i=0;i<arguments.length;i++)
 8             {
 9                 document.writeln(‘参数 ‘+i+‘:‘+arguments[i]+‘<br/>‘);
10             }
11             for(var i=0;i<arguments.length;i++)
12             {
13                 s=s+arguments[i];
14             }
15             document.writeln(‘参数的和为: ‘+s +‘<br/>‘);
16             document.writeln(‘////////////////////////////////////////////////////////////////////////‘);
17         };

arguments使用例子 3

由例子可以看出 arguments 对象操作的只是实参,而不是形参,因此我们实际上也可以不必设置形参,当然为规范性还是指定的好。

2、callee:arguments的属性,表正在执行的函数对象。

例如:

1     function sum(n)
2     {
3             if(n<=0)
4                    return 0;
5              else
6                    return n+arguments.callee(n-1);
7     }
8     sum(2);    //3
9     sum(100);    //5050

arguments.callee使用例子

3、calleer:函数对象的属性,表函数对象的父函数对象。function foo1(v1)

例:

结果:

 1       function foo1(v1)
 2       {foo2(v1,v1*2);}
 3       function foo2(v1,v2)
 4       {foo3(v1,v2,v2*2);}
 5       function foo3(v1,v2,v3)
 6       {
 7         var foo=arguments.callee;
 8         while(foo&&(foo!=window))
 9         {
10           document.writeln(‘<br>调用参数:<br>‘);
11           var args=foo.arguments;
12           argn=args.length;
13               document.write(‘参数有 ‘+argn+‘ 个:\n‘);
14           for(var i=0;i<argn;i++)
15           {
16             document.writeln(‘args[‘+i+‘]:‘+args[i]+‘<br>‘);
17           }
18           foo=foo.caller;
19         }
20       };
21       document.writeln(‘////////////////////////////////////////////////////////////////////////‘);

arguments.caller应用实例

4、apply 和 call 方法:将函数绑定到其他对象上执行。

apply:参数将以数组的形式传入;

call:参数以逗号隔开,作为一个列表传入。

 1     function classA()
 2     {
 3          this.name=‘classA‘;
 4          this.methodA=function(msg){return this.name+‘:‘+msg};
 5     }
 6     function classB()
 7     {
 8          this.name=‘classB‘;
 9          this.methodB=function(msg){return this.name+‘:‘+msg};
10     }
11     var objA=new classA();
12     var objB=new classB();
13     objA.methodA(‘调用methodA‘);           //"classA:调用methodA"
14     objA.methodA.apply(objB,[‘调用methodA‘]);                    //"classB:调用methodA"
15     objB.methodB.call(objA,[‘调用methodB‘]);                     //"classA:调用methodB"

apply 与 call 的用法

5、length :返回形参个数,指的是函数定义时期望的参数个数,与实际调用时的参数(实参)个数无关。

6、valueOf()、 toString() :返回函数的代码

7、this

  • 在构造器函数中表新创建的对象的实例;
  • 对象的方法被调用时,指调用该方法的对象实例;
  • 当函数作为一个方法而不是一个对象的方法时,表示windows对象;
  • 在函数体外,表示windows对象;
时间: 2024-12-30 06:03:26

javascript——对象的基本概念(二)的相关文章

javascript 对象简单介绍(二)

JavaScript Array(数组) 对象数组对象的作用是:使用单独的变量名来存储一系列的值. 什么是数组?数组对象是使用单独的变量名来存储一系列的值.如果你有一组数据(例如:车名字),存在单独变量如下所示:var car1="Saab";var car2="Volvo";var car3="BMW";然而,如果你想从中找出某一辆车?并且不是3辆,而是300辆呢?这将不是一件容易的事!最好的方法就是用数组.数组可以用一个变量名存储所有的值,并

Javascript对象、Jquery扩展简单应用

Javascript对象,表现方式一: 1 person = new Object(); 2 person.firstname = "An"; 3 person.lastname = "na"; 4 person.age = 12; 5 alert(person.age); Javascript对象,表现方式二: 1 function person(firstname, lastname, age) { 2 this.firstname = firstname; 3

如何理解javaScript对象?

在我们生活中,常常会提到对象一词,如:你找到对象了吗?你的对象是谁呀?等等. 在我们家庭中,有男友的女青年都会说我有对象了,那么她的对象是XX(她的男友). 夫妻间呢?都会说我的爱人是谁谁谁,现在我们应知道什么是对象了吧. 有一句谚语:万物皆对象,在我们开发者眼中,程序是反应现实生活的.那我们如何在javaScript中写脚本进行反馈生活需求信息呢? 在我们javaScript的函数中定义多个属性和函数就是一个javaScript对象. 理念概念中的定义:面向对象(object-oriented

JavaScript对象 创建对象(二)

组合使用构造函数和原型模式创建对象 function Person(name, age, job){ this.name = name; this.age = age; this.job = job; this.friends = ["Shelby", "Court"]; } Person.prototype = { constructor: Person, sayName : function () { alert(this.name); } }; var per

Ext JS学习第十天 Ext基础之 扩展原生的javascript对象(二)

此文来记录学习笔记: 今天继续说Ext.Array,Ext.Function,Ext.Date,Ext.Error ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Ext.Ar

深入学习JavaScript对象

JavaScript中,除了五种原始类型(即数字,字符串,布尔值,null,undefined)之外的都是对象了,所以,不把对象学明白怎么继续往下学习呢? 一.概述 对象是一种复合值,它将很多值(原始值或其他对象)聚合在一起,可通过属性名访问这些值.而属性名可以是包含空字符串在内的任意字符串.JavaScript对象也可以称作一种数据结构,正如我们经常听说的“散列(hash)”.“散列表(hashtable)”.“字典(dictionary)”.“关联数组(associative array)”

创建JavaScript对象的方法

方法一:object类型方法 var  person = new Object(); person.name="alisa"; person.age="16"; person.sex="female"; person.sayname = function(){ return this.name; } 方法二:对象字面量方法 var person={ name:"alisa", age:16, sex:"female&

前端之JavaScript:JavaScript对象

JavaScript(JS)之Javascript对象 简介: 在JavaScript中除了null和undefined以外其他的数据类型都被定义成了对象,也可以用创建对象的方法定义变量,String.Math.Array.Date.RegExp都是JavaScript中重要的内置对象,在JavaScript程序大多数功能都是基于对象实现的 <script language="javascript"> var aa=Number.MAX_VALUE; //利用数字对象获取可

JSON(JavaScript对象表示法)

JSON 一.概念 JavaScript Object Notation,意为JavaScript对象表示法,是一种存储和交换信息的数据格式,比xml更小.更快.更易于解析 二.语法 1. 基本规则 数据在键值对中,数据由键值对表示 键:键可以用引号也可以不用引号 值:取值可以为: 数字(整数.浮点数),直接写 字符串(在引号中) 逻辑值(true or false) 数组(在方括号中) 对象(json对象,在花括号中) null 数据由逗号分隔 花括号保存对象 方括号保存数组 2. 获取数据