<script language=javascript>
function classA(a,b){
this.a=a;
this.b=b;
this.add=add;
function add(){
return a+b;
}
} var cls=new classA(3,5);
alert(cls.add());</script>
function classA(a,b){
this.a=a;
this.b=b;
this.add=add;
function add(){
return a+b;
}
} var cls=new classA(3,5);
alert(cls.add());</script>
this.x;
}
lib_obj.prototype.setX = function(v){
this.x = v;
}lib_obj.prototype.getX = function(v){
alert(this.x);
}// Create Browsercheck Object
var myObj = new lib_obj();myObj.setX(5);
myObj.getX();myObj.setX(6);
myObj.getX();</script>
<!--
function THello(){
this.text='hello world';
this.disp=disp;
this.del=del;
}
function disp(){
alert(this.text)
}
function del(){
delete this
}
hello=new THello();
window.hello.disp()
//delete hello//-->
</SCRIPT>
js的new 作用是把function作为[object]并调用object的构造器创建的实例,并返回这个实例的指针(我不知道这里是引用还是指针,多半是引用,但借用C++的语言的说法),C++中调用你的类的构造器或直接使用系统默认的构造器。上面的代码实际上是这样的,
hello=new Object();
hello.text='hello world';
hello.disp=disp;
hello.disp()
这只是我的理解,我认为你并没有创建自己的类,更没有创建任何对象,只是创建了某个对象的实例,虽然这个实例在面向对象中人就理解为一个对象。
js无可厚非是基于对象的语言,但是那是因为js已经为你创建好了一切对象,就象你可你直接使用Date对象而无需创建,但是基于对象语言仍旧是面向对象语言,只是上面说的她已经创建好了对象。
js对象:Array , string,Math,Date,
浏览器对象:window,document,location,Navigator,link,history,anchor,form;
js的new 作用是把function作为[object]并调用object的构造器创建的实例,并返回这个实例的指针(我不知道这里是引用还是指针,多半是引用,但借用C++的语言的说法),C++中调用你的类的构造器或直接使用系统默认的构造器。上面的代码实际上是这样的,
hello=new Object();
hello.text='hello world';
hello.disp=disp;
hello.disp()
这只是我的理解,我认为你并没有创建自己的类,更没有创建任何对象,只是创建了某个对象的实例,虽然这个实例在面向对象中人就理解为一个对象。
js无可厚非是基于对象的语言,但是那是因为js已经为你创建好了一切对象,就象你可你直接使用Date对象而无需创建,但是基于对象语言仍旧是面向对象语言,只是上面说的她已经创建好了对象。
js对象:Array , string,Math,Date,
浏览器对象:window,document,location,Navigator,link,history,anchor,form;
这些只是我个人理解,由于手头除了MSDN没有更多资料,我也是初学者!
你可用delete删除一个对象的属性或数组对象的某个元素,
exp:delete hello.text或者delete window.hello.text;
hello.disp()
你不可以这样:delete window.hello
但可以这样:delete hello
来隐了,被你勾起了聊天的隐,在js中却是[无法]创建自己的类
你这样试试:alert(hello)你会看到[object Object],
也就是说js的new永远返回object类型,这和C++等试不一样的;
以C++为例:
new的过程是这样的,当new 调用成功会在空闲存储空间分配内存,然后调用对象的构造函数,并且返回指针,这个指针的类型为指针指向的被创建对象的类型(pointer-to-the-object-type-created)。你可以从这里看到js中没有用户自己的类,它只是一个把你的函数作为object类,并不是你的类,
但是人就可以认为是自己的类,因为引入类的概念目的是封装数据,有效的管理大量数据而不会出错,所以强烈建议使用上面大家提供的方法调用函数和使用变量,这样很安全,而且很容易把你的脚本扩展。
【以上只是我个人的理解,并非丛书中来,所以肯定事有错误的。我不想误人子弟,只是发表个人思想】
JavaScript并不是一个传统的面向对象(OO)的语言,而是一个基于对象的原型(prototype)语言。其特征是,没有类与对象的划分!像继承这样的功能不是通过类继承来的,而是通过原型继承来的,也就是从原型对象拷贝出来一个新对象。此外,另一个重要的区别是,JavaScript中一切都是对象,连函数(function)也是对象!而不像C++和Java中方法不是对象而只是类的附属物。所以JavaScript中,函数也可以有成员(而且这个成员也可以是函数),函数可以像别的对象一样被当作参数传递到另一个函数中去,也可以作为结果被另一个函数返回……因此JavaScript具有比传统OO语言更强的动态演化的能力。JavaScript的这种特性又被称为1-level。