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 相关文章推荐
jQuery1.6 使用方法二
Nov 23 Javascript
js过滤HTML标签以及空格的思路及代码
May 24 Javascript
最新最热最实用的15个jQuery插件汇总
Jul 05 Javascript
jQuery+formdata实现上传进度特效遇到的问题
Feb 24 Javascript
js仿微信公众平台打标签功能
Apr 08 Javascript
Vue2.0 vue-source jsonp 跨域请求
Aug 04 Javascript
jQueryMobile之窗体长内容的缺陷与解决方法实例分析
Sep 20 jQuery
简单谈谈vue的过渡动画(推荐)
Oct 11 Javascript
bootstrap Table服务端处理分页(后台是.net)
Oct 19 Javascript
解决Js先触发失去焦点事件再执行点击事件的问题
Aug 30 Javascript
Vue 实现复制功能,不需要任何结构内容直接复制方式
Nov 09 Javascript
详解小程序横屏方案对比
Jun 28 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版)
2006/10/09 PHP
php 安全过滤函数代码
2011/05/07 PHP
PHP面试题之文件目录操作
2015/10/15 PHP
文本框input聚焦失焦样式实现代码
2012/10/12 Javascript
js保留两位小数使用toFixed实现
2013/07/29 Javascript
javascript使用location.search的示例
2013/11/05 Javascript
JQuery实现的购物车功能(可以减少或者添加商品并自动计算价格)
2015/01/13 Javascript
Uploadify上传文件方法
2016/03/16 Javascript
bootstrap和jQuery.Gantt的css冲突 如何解决
2016/05/29 Javascript
jQuery+ajax简单实现文件上传的方法
2016/06/03 Javascript
json定义及jquery操作json的方法
2016/10/03 Javascript
React快速入门教程
2017/01/17 Javascript
创建一般js对象的几种方式
2017/01/19 Javascript
VUE元素的隐藏和显示(v-show指令)
2017/06/23 Javascript
Vue2.0基于vue-cli+webpack同级组件之间的通信教程(推荐)
2017/09/14 Javascript
Vue cli3 库模式搭建组件库并发布到 npm的流程
2018/10/12 Javascript
详解vue移动端项目代码拆分记录
2019/03/15 Javascript
vue 路由meta 设置导航隐藏与显示功能的示例代码
2020/09/04 Javascript
Linux系统上Nginx+Python的web.py与Django框架环境
2015/12/25 Python
基于python实现的抓取腾讯视频所有电影的爬虫
2016/04/22 Python
Python爬虫框架Scrapy实例代码
2018/03/04 Python
利用Pytorch实现简单的线性回归算法
2020/01/15 Python
Python处理PDF与CDF实例
2020/02/26 Python
浅谈django channels 路由误导
2020/05/28 Python
Python 没有main函数的原因
2020/07/10 Python
python录音并调用百度语音识别接口的示例
2020/12/01 Python
BookOutlet加拿大:在网上书店购买廉价折扣图书和小说
2018/10/05 全球购物
耐克波兰官方网站:Nike波兰
2019/09/03 全球购物
澳大利亚设计师服装在线:MISHA
2019/10/07 全球购物
购买原创艺术品:Zatista
2019/11/09 全球购物
上海方立数码笔试题
2013/10/18 面试题
班子四风对照检查材料
2014/08/21 职场文书
2014年学生会主席工作总结
2014/11/07 职场文书
2015大学生暑期实习报告
2015/07/13 职场文书
PHP中->和=>的意思
2021/03/31 PHP
Grafana可视化监控系统结合SpringBoot使用
2022/04/19 Redis