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

javascript的对象和函数

javascript的对象和函数
对象

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

  1. var obj = {}; 

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

  1. var notification = {}; 

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

  1. notification.id=1; 

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

  1. notification.title="紧急消息"。 

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

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

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

  1. delete notification.printTitle; 

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

  1. delete notification.title; 
  2. delete notification.id; 

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

函数

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

  1. function add(a,b){ 
  2. return a+b; 

变量式:

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

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

  1. var a = function(){alert(1);} 
  2. a(); 
  3. var a = function(){alert(2);} 
  4. a(); 
  5. //执行结果,先输出1,在输出2。
  6. function b(){alert(3)} 
  7. b(); 
  8. function b(){alert(4)} 
  9. b(); 
  10. //执行结果,都将输出4.

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

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

在同一段程序的分析执行中,定义式的函数语句会被提取出来优先执行。函数定义执行完之后,才会按顺序执行其他语句代码。
对象的声明与定义
1,json形式的声明:
  1. var a = {};var b={name:'jack',gender:'m'} 

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

  1. function A(){};//定义一个函数
  2. var a = new A();//注意这里产生的是一个对象,千万不要理解成实例,虽然很像,javascript中没有类的概念当然也就没有实例的概念。
  3. new 是javascript的一个运算符(就相当于 +-*/),new 把上述的语句进行分解,并执行: 
  4. var a ={}; 
  5. a.__proto__=A.prototype;//将a的原型链,指向A的原型(prototype不是原型链的一部分,它只是用来存储原型属性的载体!后面章节细说!)
  6. A.call(a); 

转载于:https://my.oschina.net/u/142412/blog/108722

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值