javascript”面向对象编程”- 1万物皆对象


javascript几乎成了如今web开发人员必学必会的一门语言,但很多人却只停在了一些表单验证等基础操作层面上,在面向对象语言大行其道的当下,我们需要去学习javascript的面向对象的知识,以便更好的掌握javascript、为深入理解各种脚本框架打好基础。

  javascript和java、C#等语言一样也具有面向对象的一些特征,但细比较的时候,会发现这些特征并不是真正的面向对象,很多地方都是利用对象本身来模拟面向对象,所以认为javascript不能算是面向对象编程语言,而是基于对象的语言。

  在javascript中真的是万物皆对象,new出来的东西是对象,方法是对象,连类也都是对象。下面分别来看一下对象、方法和类的对象特征。

  1.拿内置的Date来看一下吧

var time = new Date(); 
var timeString = time.getFullYear() + "-" + 
                 time.getMonth() + "-" + 
                 time.getDate() + " " + 
                 time.getHours() + ":" + 
                 time.getMinutes() + ":" + 
                 time.getSeconds(); 
document.write(timeString);

  通过 time来操作其所引用的Date对象,可以方便的调用Date的对象所包含的一系列getXX()方法来获取年月日时分秒等信息。

  可以再看一下String

var username = new String("hello world"); 
document.write(username.length); 

  变量username引用了new出来的字符串对象,通过username访问字符串对象的length属性。

  2.方法也是对象

function hello() { 
    alert("hello"); 
}; 
var helloRef = hello; 
helloRef();

  hello是一个方法,helloRef是一个引用了hello方法的变量,helloRef和hello一样都指向了相同的方法对象。也就意味着helloRef也可以执行,helloRef()。同理也可以写出以下代码。

var helloRef = function() { 
    alert("hello"); 
}; 
helloRef(); 

  function(){alert(“hello”)}是一个匿名方法,当然也是对象,用helloRef变量引用该方法对象后,可以通过helloRef来调用方法。

  3.那么类呢?当然类也是对象,在javascript中,不像C#或java那样有class关键字用来创建类,而是直接使用方法的关键字来创建类或者叫模拟类。

function Person(username, age) { 
    this.Name = username; 
    this.Age = age; 
    this.Introduce = function() { 
        alert("我叫" + this.Name + ",今年" + this.Age + "岁了。"); 
    }; 
}; 
var person1 = new Person("张三", 20); 
person1.Introduce(); 

  以上创建了一个Person类型,Person带有构造参数username和age,通过创建的Person对象可以调用Person所包含的方法Introduce。下面对代码做一些修改。

function Person(username, age) { 
    this.Name = username; 
    this.Age = age; 
    this.Introduce = function() { 
        alert("我叫" + this.Name + ",今年" + this.Age + "岁了。"); 
    }; 
}; 
var PersonClass = Person; 
var person1 = new PersonClass("张三", 20); 
person1.Introduce();

  重新声明新的变量PersonClass并引用Person类,PersonClass和Person都指向了原来的Person所引用的类,所以也可以用PersonClass来创建对象。

  以上的几个例子可能不是很恰当,但也可以一窥javascript中万物皆对象。



相关阅读:
使用 GUID 值来作为数据库行标识讲解
Windows Server 2008 防火墙配置
php PDO中文乱码解决办法
MySQL在数据库市场获得25%的市场份额
Linux对进程与程序进行操作的几个技巧
6.6 Web程序中网页间数据传递方法小结
深入解析php模板技术原理【一】
asp+ajax仿google搜索提示效果代码
快速进行纯净版的windows 7系统安装
WPF和Silverlight到底有什么不同?
系统设置--liloconfig
使用ADSI、ASP和一对魔术戏法自动地创立一个虚拟目录的方法
微软:SQL Server 2008正式版下月发布
在ASP.NET中访问SQL 2005报表服务
快速导航

Copyright © 2016 phpStudy | 皖ICP备18014864号-4