javascript 面向对象编程 万物皆对象


Posted in Javascript onSeptember 17, 2009

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中万物皆对象。
下一节详细的谈一谈javascript中的对象。
Javascript 相关文章推荐
javascript 清空form表单中某种元素的值
Dec 26 Javascript
不使用中间变量,交换int型的 a, b两个变量的值。
Oct 29 Javascript
js onkeypress与onkeydown 事件区别详细说明
Dec 13 Javascript
jquery ajax属性async(同步异步)示例
Nov 05 Javascript
jQuery+PHP打造滑动开关效果
Dec 16 Javascript
js实现每日自动换一张图片的方法
May 04 Javascript
jQuery使用deferreds串行多个ajax请求
Aug 22 Javascript
React-Native 组件之 Modal的使用详解
Aug 08 Javascript
剖析Angular Component的源码示例
Mar 23 Javascript
小程序getLocation需要在app.json中声明permission字段
Apr 04 Javascript
javascript实现倒计时效果
Feb 17 Javascript
详解React 元素渲染
Jul 07 Javascript
javascript 面向对象编程 function也是类
Sep 17 #Javascript
类似CSDN图片切换效果脚本
Sep 17 #Javascript
var与Javascript变量隐式声明
Sep 17 #Javascript
html数组字符串拼接的最快方法
Sep 16 #Javascript
在IE下获取object(ActiveX)的Param的代码
Sep 15 #Javascript
javascript 检测浏览器类型和版本的代码
Sep 15 #Javascript
不安全的常用的js写法
Sep 15 #Javascript
You might like
PHP mkdir()定义和用法
2009/01/14 PHP
PHP实现的增强性mhash函数
2015/05/27 PHP
php查询whois信息的方法
2015/06/08 PHP
PHP编写简单的App接口
2016/08/28 PHP
form自动提交实例讲解
2017/07/10 PHP
PHP实现的字符串匹配算法示例【sunday算法】
2017/12/19 PHP
Eval and new funciton not the same thing
2012/12/27 Javascript
java与javascript之间json格式数据互转介绍
2013/10/29 Javascript
jquery使用append(content)方法注意事项分享
2014/01/06 Javascript
js完美的div拖拽实例代码
2014/01/22 Javascript
js 调用百度地图api并在地图上进行打点添加标注
2014/05/13 Javascript
JS实现把鼠标放到链接上出现滚动文字的方法
2016/04/06 Javascript
轮播图组件js代码
2016/08/08 Javascript
bootstrap flask登录页面编写实例
2016/11/01 Javascript
input输入密码变黑点密文的实现方法
2017/01/09 Javascript
详解Vue SSR( Vue2 + Koa2 + Webpack4)配置指南
2018/11/13 Javascript
在node中使用jwt签发与验证token的方法
2019/04/03 Javascript
详解Vue中使用Axios拦截器
2019/04/22 Javascript
Vue常用的全选/反选的示例代码
2020/02/19 Javascript
Node.js API详解之 zlib模块用法分析
2020/05/19 Javascript
vue 内联样式style中的background用法说明
2020/08/05 Javascript
Django中Forms的使用代码解析
2018/02/10 Python
Python扩展内置类型详解
2018/03/26 Python
Python递归函数实例讲解
2019/02/27 Python
阿里云ECS服务器部署django的方法
2019/08/29 Python
python实现人性化显示金额数字实例详解
2020/09/25 Python
最新大学生自我评价
2013/09/24 职场文书
计算机工程学院个人求职信
2013/10/05 职场文书
业务代表的岗位职责
2013/11/16 职场文书
开办加工厂创业计划书
2014/01/03 职场文书
迟到检讨书5000字
2014/01/31 职场文书
2014年医务科工作总结
2014/12/18 职场文书
证券区域经理岗位职责
2015/04/10 职场文书
交通安全教育主题班会
2015/08/12 职场文书
python - asyncio异步编程
2021/04/06 Python
分析SQL窗口函数之排名窗口函数
2022/04/21 Oracle