JavaScript面向对象

以前总认为JavaScript不能算是面向对象的语言,至少它不能很好的吻合面向对象最基本的三大特性(继承、封装、多态),但是有很多人认为JavaScript是面向对象语言,好像也说得没错,因为面向对象也能在JavaScript中实现,比如说继承、封装。
有的人这样说:“面向对象只是一种思想,语言只能说是否很好的支持面向对象的特性”。我觉得说得挺好,还有人说如果对面向对象有一定的认识,用C也能写出面向对象的程序,javascript也是如此。所以说不能断然说JavaScript是面向对象语言或者不是面向对象语言。
关于创建对象的技巧:空对象obj={},obj=new Object()顶级对象,obj=new Function()等内置对象,.和[]其实都是面向对象调用的方式,可以来创建自定义对象;
1. 利用json创建对象
JS代码-json类型 方案一
var jsonObj = {};
jsonObj.Lang = 'Javascript';
jsonObj.Version = '1.1.1';
jsonObj.Date = "Mon Nov 21 21:11:03 2012-03-08";
jsonObj.Copyright = function(author) {
returnauthor;
}
//调用示例
alert(jsonObj.Lang);
alert(jsonObj.Copyright("It's jsonObj Copyright"));
2.使用JavaScript中的Object类型
JS代码-Object类型
var obj = new Object();
obj.Lang = 'Javascript';
obj.Version = '1.1.1';
obj.Date = "Mon Nov 21 21:11:03 2012-03-08";
obj.Copyright = function(author) {
returnauthor;
}
//调用示例
alert(obj.Lang);
alert(obj.Copyright("It's obj Copyright"));
JS代码-json类型 方案二
var jsonObj = {
Lang : 'Javascript',
Version : '1.1.1',
Date : "Mon Nov 21 21:11:03 2012-03-08",
Copyright : function(author) {
return author;
}
};
//调用示例
alert(jsonObj.Lang);
alert(jsonObj.Copyright("It's jsonObj Copyright"));
3.利用浏览器window对象
JS代码-window类型 方案一:
window.Lang = 'Javascript';
window.Version = '1.1.1';
window.Date = "Mon Nov 21 21:11:03 2012-03-08";
window.Copyright = function(author) {
returnauthor;
}
//调用示例
alert(window.Lang);
alert(Copyright("It's obj Copyright"));
JS代码- window类型 方案二:
window["obj"] = {};
obj.Lang = 'Javascript';
obj.Version = '1.1.1';
obj.Date = "Mon Nov 21 21:11:03 2012-03-08";
obj.Copyright = function(author) {
returnauthor;
}
//调用示例
alert(obj.Lang);
alert(obj.Copyright("It's obj Copyright"));
JS代码- window类型 方案三:
window["obj"] = {
Lang: 'Javascript',
Version: '1.1.1',
Date: "Mon Nov 21 21:11:03 2012-03-08",
Copyright: function(author) {
return author;
}
};
//调用示例
alert(obj.Lang);
alert(obj.Copyright("It's obj Copyright"));

4.
通过function函数来生成对象
JS代码-function 类型 方案一:
function fnObj() {
this.Lang= 'Javascript';
this.Version= '1.1.1';
this.Date= "Mon Nov 21 21:11:03 2012-03-08";
this.Copyright= function(author) {
returnauthor;
}
}
//调用示例
varfn = new fnObj();//必须实例化
alert(fn.Lang);
alert(fn.Copyright("It's obj Copyright"));
JS代码-function 与其它对象结合 方案二:
//与Window对象结合
function fnWindow(lang) {
window["winobj"] = {
Lang:lang
};
returnwinobj;
}
alert(fnWindow('Javascript').Lang);//工厂方式
var _fnWindow = new fnWindow('Javascript');//实例方式
alert(_fnWindow.Lang);
//与Json对象结合
function fnJson() {
varjsonobj = {
Version: '1.1.1'
};
returnjsonobj;
}
var_fnJson = new fnJson();
alert(_fnJson.Version);
//与Function对象结合
functionfn() {
fnobj = new Function();
fnobj.Copyright= function(author) {
return author;
}
return fnobj;
}
var_fn = new fn();
alert(_fn.Copyright("It's obj Copyright"));
//与fnObject对象结合
functionfnObject() {
obj = new Object();
obj.Date= "Mon Nov 21 21:11:03 2012-03-08";
returnobj;
};
var_fnObject = new fnObject();
alert(_fnObject.Date);
1.对象复制
JS代码:
function fnObj() {
this.Lang= 'Javascript';
this.Version= '1.1.1';
this.Date= "Mon Nov 21 21:11:03 2012-03-08";
this.Copyright= function(author) {
returnauthor;
}
}
functionapply(o, c){
if(o&& c && typeof(c) == 'object'){
for(var p in c){
o[p] = c[p];
}
}
return o;
}
//调用示例
fn = newfnObj(); //实例化function对象
obj = newObject(); //创建Object对象
window["winobj"]={};//创建window对象
varvarobj={};
apply(obj, fn);
apply(winobj, fn);
apply(varobj, fn);
alert(obj.Lang);
alert(winobj.Version);
alert(varobj.Date);
2.对象复制(函数方式)
JS代码:
var copyOO = new Function();
copyOO.prototype = Programmer;
var newcopyOO = new copyOO();
///这时newcopyOO将与Programmer相同
Tags: 

延伸阅读

最新评论

发表评论