日期:2014-05-16 浏览次数:20382 次
声明:下面的都是在je论坛上看到的,在这里整理了一下。
?
什么才算javascript中的对象:
?? a、基本数据类型的包装对象。例如String Number Boolean.建议直接用var
s=""; var i=1; var b=false;定义,包装类与java中的包装类不同。javascript中不要用包装类。
?? b、javascript预定义的对象。Function Array Date?? RegExp?
Error等对象。
?? c、用new Object()创建的对象。等同与var o={a:0,b:'s'};
?? d、用自定义的构造函数创建的对象。function O(){};? var o=new O();
?? e、dom模型定义的构造函数,浏览器为你创建的对象。用var
o=document.getElementById();或其他方法获得。
?? f、null也是对象。typeof(null)=
object.undefined 可以理解为变量预编译的初始化值,而null是特殊的对象。如果一个变量=null,说明这个变量是个对象,但不是我上面
提到的任何来源方式的对象。 如document.getElementById(页面中不存在的id);可以产生一个null对象。
?? 用typeof()? 方法返回的是 object 的变量都是对象。 Function除外用new定义的不一定都是对象。
?
在一个自定义“类”中有中有几个地方可以定义属性。
?? a、函数名中直接定义。?
如Person.name。在这定义相当于类名的属性。静态的,访问的时候必须用Person.name来访问,不能用new
Person().name访问,也访问不到。
?? b、构造函数的this.中。当你用new function()时,这些属性就是你所持对象的属性。用new Person().属性?
来访问。
?? c、构建好对象以后,给对象增加属性。和构造函数中的属性使用类似。
?? d、函数名的prototype中
?? e、父类或Object 的prototype中。(注释:
可用prototype为函数动态新增函数属性与方法
,相当于对象的属性
)?
?
在prototype中的都是属于对象的公有(方法/属性)
?
静态方法中可以用this.属性来引用静态属性,也可以用类名.属性来应用;对象的方法引用静态变量,只能用类名.属性;
?
JS中面向对象的5中写法
?
//第1种写法 function Circle(r) { this.r = r; } Circle.PI = 3.14159; Circle.prototype.area = function() { return Circle.PI * this.r * this.r; } var c = new Circle(1.0); alert(c.area());
?
//第2种写法 var Circle = function() { var obj = new Object(); obj.PI = 3.14159; obj.area = function( r ) { return this.PI * r * r; } return obj; } var c = new Circle(); alert( c.area( 1.0 ) );
?
//第3种写法 var Circle = new Object(); Circle.PI = 3.14159; Circle.Area = function( r ) { return this.PI * r * r; } alert( Circle.Area( 1.0 ) );
?
//第4种写法 var Circle={ "PI":3.14159, "area":function(r){ return this.PI * r * r; } }; alert( Circle.area(1.0) );
?