第一部分 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执行引擎并非一行一行地分析和执行程序,而是一段一段地分析执行的。
什么叫一段一段:
在同一段程序的分析执行中,定义式的函数语句会被提取出来优先执行。函数定义执行完之后,才会按顺序执行其他语句代码。
对象的声明与定义
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);
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);
相关文章推荐
- JavaScript基础之Date对象与全局属性函数
- JavaScript基础整理--函数 ,对象,作用域等重点
- Javascript基础--函数(Function对象)
- JavaScript之基础-13 JavaScript Functions (Function对象、创建函数、匿名函数、闭包)
- javascript基础编程の变量、对象、数据类型及函数
- JavaScript基础(基本语法:变量、语句、数组、函数、对象、全局方法以及js与java不同,js与html关联)
- javascript 面向对象基础(一)对象组成及函数封装
- Javascript基础系列之(七)函数(对象和属性)
- JavaScript基础_04对象与函数
- (3)JavaScript基础(基本语法:变量与数据类型、类型转换、运算符、流程控制、函数、对象、自定义对象、原型)
- 第一部分 Javascript基础 第3节 javascript对象的分类
- JavaScript基础(对象定义,函数定义,数据类型等)
- Javascript基础教程之函数对象和属性
- Javascript基础编程の变量、对象、数据类型及函数
- 黑马程序员_javascript 函数和对象基础知识
- 【javascript基础】之【理解JavaScript函数(函数和对象的区别和联系)】
- JavaScript基础精华02(函数声明,arguments对象,匿名函数,JS面向对象基础)
- javascript基础编程の变量、对象、数据类型及函数
- Javascript面向对象基础三-函数
- JavaScript基础精华02(函数声明,arguments对象,匿名函数,JS面向对象基础)