1.使用对象初始化程序
除了用构造函数来创建对象,您可以用对象初始化程序创建对象,对象初始化程序(Object initializer)技术是从 C++ 中引用来的,它的用法如下:
objectName = {property1:value1, property2:value2,..., propertyN:valueN}
例子:
a={x:1,y:2};
alert(a.x);
2.用构造函数定义对象类:
创建一个函数来指定对象的名字、属性和方法来定义对象类,例如假设您需要创建的对象类为 car,它具有属性 make、model、year 和 color,您可以这样:
function car(make, model, year) {
this.make = make
this.model = model
this.year = year
}
现在您可以创建一个对象:mycar,
mycar = new car("Eagle", "Talon TSi", 1993)
您还可以给先前定义的对象添加一个属性,如:mycar.color = "black" ,然而它不会影响其它的同类对象。
3.索引对象属性
在 JavaScript
中,对象也是一个数组,可以按名称(使用对象名称,后跟一个圆点和属性的名称)来引用一个对象的任何成员(属性和方法),
也可以按其数组下标索引来引用。JavaScript 中下标的是从 0
开始编号的,也可以用其名称来引用下标。因此您可用多种方法来引用属性,如果某文档有两个表单,其中第二个表单名为“myForm”下面的方法是等价的:
document.myForm
document.forms[1] // [1] 是 HTML 源顺序中属性 forms 的索引。
document.forms["myForm"]
4 为对象类定义属性
您可以用 prototype 属性在先前定义的对象类中加入一个属性,它可以被所有指定的对象类所共享。下面的代码为 car 类所有的对象添加一个 color 属性,并为 car1 的 color 属性赋值:
Car.prototype.color=null
car1.color="black"
5.数组的初始化:
var a=new Array();
a=[1,1,1,2,333];
var a=[1.1,{x:2,y:33}];
alert(a[1].x);
var a=[1,,,,,3];
6.prototye: (5个)
Number,String,Boolean, undefined , and null
String
可以使用包装类
var s=new String("ssssss");
Number :
|
Property |
Value |
|---|---|
|
Number.MAX_VALUE |
Largest magnitude representable |
|
Number.MIN_VALUE |
Smallest magnitude representable |
|
Number.POSITIVE_INFINITY |
The special value Infinity |
|
Number.NEGATIVE_INFINITY |
The special value –Infinity |
|
Number.NaN |
The special value NaN |
Boolean:
var b0=new Boolean(true); var b1=new Boolean();//false var b2=false;
7.Date对象
var now=new Date();
var xmas=new Date(2008,11,25);//表示2008年12月25日,因为月份是从0开始
8.for/in
for(variable in object){
statement;
}
eg:
//枚举数组下标
var a=[1.1,{x:2,y:33}];
for(var i in a){
document.writeln(i);
}
//把一个对象的所有属性名复制到一个数组中
var a={x:1,y:22};
var b=new Array();
var i=0;
for(b[i++] in a);
document.write(b[0]);
9.throw语句
if(x<0)throw new Error("错了!!!");
10.try/catch/finally
try{}
catch(ex){}
finally{}
11.typeof
var a="ddd"; document.write(typeof a );
12. 使用Function()创建函数(动态的创建函数 )
创建函数除了使用function语句之外,还可以使用如下:
var f=new Function("x","return x*x;");
var f2=new Function("x","y","return x*y");
13函数直接量
var a=new Array();
a[0]=function(x){return x*x;};//定义函数并保存它,调用的时候可以使用a[0](2)语句
a.sort(function(a,b){return a-b;}); //定义函数,把它传递给另外一个函数
var ttt=(function(x){return x*x;})(10);//定义函数并调用
var f=function fact(x){return x*fact(x-1);}//注意该函数没有真正创建名称为fact的函数,只是使用这个名字来
引用自己实现递归.(参考第16点)
14作为数据的函数
function sq(x){return x*x;};
var b=sq;//现在 本b引用的函数和sq一样.
var c=b(22);
function add(x,y){return x+y;};
function operate(fun,p1,p2){
return fun(p1,p2);
}
operate(add,1,3) ;
//和上面相同的方式重新实现,
var operators=new Object();
operators["add"]=function(x,y){return x+y};
function operate2(fun_name,p1,p2){
return operators[fun_name](p1,p2);
}
operate2("add",operate2("add",1,11),1) ;
15.将对象保存在数组中,间接改变对象的值.
<table border=1 id="win1" width=100>
<tr>
<td>
fasfa
</td>
</tr>
</table>
<script>
t=document.getElementById("win1");
o=new Array();
o.push(t);
o[0].width=200;
</script>
16.函数真正的参数:Arguments对象.
对于函数参数可变的情况,使用arguments非常管用,用法和数组一样,不过要记住它不是数组噢!
改变arguments[0]的值就会改变函数第一个参数的值,依次类推.
属性callee: 用来调用函数自己,对于没有函数名的变量非常有用.
function(x){
return arguments.callee(x-1);
}
17.函数属性.(Function对象)
javascript函数都是对象!你调用函数的时候可以传入任意的函数个数,所以就有了只读属性length .
length属性:
他的作用就是返回函数定义的实际参数个数.用法如下:
function check(args){
var actual=args.length; //实际的参数个数
var expected=args.callee.length; //要求的参数个数
}
prototype属性
18.对象属性的枚举
var oo=new Object();
oo.id="22";
oo.name="ztc"
function f(obj){
for(var o in obj){
document.writeln(o);
}
}
19.删除未定义的属性.
delete oo.id; delete oo.name;
delete 是真正的把该属性从对象中移除.
20.用构造函数定义方法.
注意这种方法定义方法会损耗很大的内存! 最好使用"原型方式"创建
function test(){alert("hi!");};
function fun(){
this.t=test;
}
var f=new fun();
f.t();
21.类属性/方法
类名.属性名= 值
类名.方法名=function (){};
22.继承
function A(){
this.x=1;
this.y=2;
}
function B(){
this.z=9;
}
B.prototype=new A();
B.prototype.constructor=B;//constructor属性用来引用构造函数.
B.prototype.method=function(){
alert(this.y);
}
b=new B();
b.method();
constructor可以用来确定给定对象的类型
if((typeof o == "object") && (o.constructor == Date)){
}
本文介绍了JavaScript中的对象初始化、构造函数定义、属性访问及函数创建等多种技术。覆盖了对象的创建方式、属性设置与访问、函数定义及应用等内容。
1391

被折叠的 条评论
为什么被折叠?



