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 相关文章推荐
js获取网页高度(详细整理)
Dec 28 Javascript
查看图片(前进后退)功能实现js代码
Apr 24 Javascript
获得Javascript对象属性个数的示例代码
Nov 21 Javascript
JS之相等操作符详解
Sep 13 Javascript
jQuery autoComplete插件两种使用方式及动态改变参数值的方法详解
Oct 24 Javascript
JS键盘版计算器的制作方法
Dec 03 Javascript
强大的 Angular 表单验证功能详细介绍
May 23 Javascript
React组件重构之嵌套+继承及高阶组件详解
Jul 19 Javascript
前端面试知识点目录一览
Apr 15 Javascript
JS继承定义与使用方法简单示例
Feb 19 Javascript
vue自定义标签和单页面多路由的实现代码
May 03 Javascript
深度解读vue-resize的具体用法
Jul 08 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
Syphon 秘笈
2021/03/03 冲泡冲煮
php获取新浪微博数据API实例
2013/11/12 PHP
PHP使用strstr()函数获取指定字符串后所有字符的方法
2016/01/07 PHP
PHP多进程之pcntl_fork的实例详解
2017/10/15 PHP
PHP多线程模拟实现秒杀抢单
2018/02/07 PHP
jQuery-ui引入后Vs2008的无智能提示问题解决方法
2014/02/10 Javascript
实例讲解JS中数组Array的操作方法
2014/05/09 Javascript
跟我学Nodejs(三)--- Node.js模块
2014/05/25 NodeJs
js选项卡的实现方法
2015/02/09 Javascript
JS实现禁止鼠标右键的功能
2016/10/15 Javascript
Vee-Validate的使用方法详解
2017/09/22 Javascript
Vue如何实现监听组件原生事件
2020/07/03 Javascript
Vant Weapp组件踩坑:picker的初始赋值解决
2020/11/12 Javascript
[00:10]DOTA2全国高校联赛速递
2018/05/30 DOTA
python实现360皮肤按钮控件示例
2014/02/21 Python
Python获取Windows或Linux主机名称通用函数分享
2014/11/22 Python
Python实现国外赌场热门游戏Craps(双骰子)
2015/03/31 Python
python读取文本中数据并转化为DataFrame的实例
2018/04/10 Python
Python实现去除列表中重复元素的方法小结【4种方法】
2018/04/27 Python
python numpy 显示图像阵列的实例
2018/07/02 Python
Python文本处理简单易懂方法解析
2019/12/19 Python
keras训练浅层卷积网络并保存和加载模型实例
2020/07/02 Python
python文件及目录操作代码汇总
2020/07/08 Python
python更新数据库中某个字段的数据(方法详解)
2020/11/18 Python
Bobbi Brown芭比波朗美国官网:化妆师专业彩妆保养品品牌
2016/08/18 全球购物
手工制作的音乐盒:Music Box Attic
2019/09/05 全球购物
英国时尚配饰、珠宝和服装网站:KJ Beckett
2020/01/23 全球购物
自我鉴定写作要点
2014/01/17 职场文书
房屋租赁协议书(标准版)
2014/10/02 职场文书
公安交警中队队长个人对照检查材料思想汇报
2014/10/05 职场文书
全国爱眼日活动总结
2015/02/27 职场文书
项目合作意向书
2015/05/08 职场文书
幼儿园教师教育随笔
2015/08/14 职场文书
家庭教育教师培训学习体会
2016/01/14 职场文书
Python代码,能玩30多款童年游戏!这些有几个是你玩过的
2021/04/27 Python
Python万能模板案例之matplotlib绘制直方图的基本配置
2022/04/13 Python