您的位置:首页 > Web前端 > JavaScript

第一部分 Javascript 基础 第2节 javascript的对象和函数

2013-02-16 00:00 232 查看
javascript的对象和函数

javascript的对象和函数
对象
在面向对象对象语言中,类与对象的关系非常明确,一个对象必须是一个类的实例。
而javascript中却没有类的概念,没有了类也就没有继承、多态、重载这些东西了。在一些javascript框架中有关于一些类的定义,这些东西只是通过javascript的特性来模拟面向对象语言,而并非是javascript的本质。
javascript对象,最常用的写法:

var obj = {};

这就是一个javascript对象,也就是第一节(javascript数据类型)最后所说的复杂数据类型。
定义一个javascript对象还有其他方式,后面再说。
javascript对象,并不是定义完了就不能改变的,随着业务流程的需要你可以在这个对象上添加,删除你需要的属性(变量,方法);
下面是一个例子,用来说明对象的变化:
1,一个消息对象,一开始我不知道里面需要什么东西,所以我定义一个对象里面没有东西

var notification = {};

2,领导说,这个消息里需要有个Id,那么就可以为这个消息添加一个属性id

notification.id=1;

这时notification有了id这个属性。如果在面向对象语言中,你知道加这个属性有多麻烦!
3, 领导又说,这个消息里需要有个title,那么就可以为这个消息添加一个属性title

notification.title="紧急消息"。

4,领导又说了,这个消息能够有个方法,打印出这个notification的title,那么就可以为这个notification添加一个method

notification.printTitle=function(){console.log(this.title)};

好了,之前定义的那个空的notification对象现在已经有了三个属性。
5,领导某天有心血来潮说,他觉得不需要那个打印方法了,需要去掉。通过下面的方式就可以完成

delete notification.printTitle;

现在notification这个对象就剩下两个属性了:id 和 title。
6,领导又说,id和title也不想要了,类似的:

delete notification.title;

delete notification.id;

现在notification对象已经恢复到刚开始的什么也没有的样子了。
从上面这个流程你可以看出,一个javascript对象,你可以随时对它的属性进行修改,这个对象是能够时时变化的,非常的灵活。

函数
函数最基本的特性是能够被调用。
在javascript中声明函数有多种方式:
function func1(…){…}//常用
var func2=function(…){…};//常用
var func3=function func4(…){…};//不常用
var func5=new Function();//不常用
常用的两种分别为定义式和变量式
定义式:

function add(a,b){

return a+b;

}

变量式:

var add = function(a,b){return a+b;}

这两种方式都是创建了一个javascript内置对象Function的一个实例,即一个对象(注意这个地方,函数是一个对象)。
可以这么理解函数是一个可以被调用执行的对象,既然是对象,它就拥有对象所具有的一切特性。
需要注意的一点,javascript引擎对两种声明的分析和执行是不同的:

var a = function(){alert(1);}

a();

var a = function(){alert(2);}

a();

//执行结果,先输出1,在输出2。

function b(){alert(3)}

b();

function b(){alert(4)}

b();

//执行结果,都将输出4.

JavaScript执行引擎并非一行一行地分析和执行程序,而是一段一段地分析执行的。
什么叫一段一段:

<script>第一段</script>
<script>第二段</script>


在同一段程序的分析执行中,定义式的函数语句会被提取出来优先执行。函数定义执行完之后,才会按顺序执行其他语句代码。

对象的声明与定义

1,json形式的声明:

var a = {};var b={name:'jack',gender:'m'}

2,通过方法(或者说函数)构造对象:

function A(){};//定义一个函数

var a = new A();//注意这里产生的是一个对象,千万不要理解成实例,虽然很像,javascript中没有类的概念当然也就没有实例的概念。

new 是javascript的一个运算符(就相当于 +-*/),new 把上述的语句进行分解,并执行:

var a ={};

a.__proto__=A.prototype;//将a的原型链,指向A的原型(prototype不是原型链的一部分,它只是用来存储原型属性的载体!后面章节细说!)

A.call(a);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: