您的位置:首页 > 移动开发 > Objective-C

js里面的object对象

2015-12-25 16:10 489 查看

对象的存取方式有2种如下

meberA.name ; meberA.age

或者

meberA["name"]; meberA.["age"]

当存在此属性时将修改属性的值,当不存在时候自动创建一个新的属性,并且赋值

由于整个js都是由对象构成的,所以说可以用以下函数查看某个对象所有的属性

function showAllProper(objname,strobjname){

var result= "";

for (var p in objname)

reslut+=strobjname+"[\""+p+"\"]="+objname[p]+"\n";

return result;

}

使用时候

showAllProper(meberA,"mberA")

就会传回所有的属性

建立一个object对象大体有三种方法

1. 调用new运算符和Object对象 var obj=new Object() 或var obj=new Objct(value)

object对象没有任何属性,需要手动添加属性,方法如下

var memberA=new Object()

memberA.name="tony";

memberA.age=25;



meberA["name"]="tony";

meberA.["age"]=25;

2. 用大括弧{...}来直接描述属性和方法 var objectName={ propertyName1:value1,propertyName2:value2,propertyName3:value3 };

属性名称和属性值用冒号: 分开,每组属性用 逗号,分隔

如下所示

var memberA={

name:"tony",

age:25,

objpropname:{

propName1:value1,

propName2:value2

},

};

3. 自定义一个建构函数,然后和第一种方式一样用new来创建

function funcName( param1,param2,...,paramN){

this.property1=param1;

this.property2=param2;

....

this.propertyN=paramN;

}

声明完构建函数后,可以定义此对象类型对象:

var obj=new funcName(value1,value2,...,valueN);

定义对象的方法和定义对象属性很像,只要将函数名称指定给对象就可以了,或者直接定义函数

如下

function rect(w,h){

this.w=w;

this.h=h;

this.area=function(){

return this.w*this.h;

}



function calArea{

return this.w*this.h;

}

function rect(w,h){

this.w=w;

this.h=h;

this.area=aclArea;

}

注意定义完对象后可以使用delete来删除 属性或者对象

delete object_name;

delete object_name.property_name;
建立对象共同的属性和方法prototype

属性对象prototype就是让我们定义相同类型对象公用的属性和方法

function_name.prototype.property_name=proterty_value

具体如下

function calArea{

// this 会参考调用此方法的对象

return this.w*this.h;

}

function rect(w,h){

this.w=w;

this.h=h;

//this.area=aclArea;

}

rect.prototype.area=calArea;

建立对象公用属性后,可以用下面方式来参考值

function_name.prototype.poperty_name

或者

object_name.property_name

当读取公用的属性值或是调用公用的方法时,两种方式都可以,动脑是如果要更改公用的属性值,或者更改方法的定义

应该使用第一种方式,因为第二种方式会建立新的对象属性或者方法定义,并赋值。

新的对象属性是属于个别对象的,队日他们的名称和公用对象的属性名称一样,但它不是公用对象,类似于对象继承的override

建立类class的属性和方法

方法如下

function_name.property_name=proterty_value;

function_name.method_name=method_definition;

其中function_name为已经存在的建构函数名称

例如

function Circle(){

}

定义一个为PI的类属性

Circle.PI=3.14

定义一个为cal的类属性

Circle.cal=function(r){ return this.PI*r*r;};

其中this.PI和Circle.PI是一样的,这里的this不是调用此方法的对象参考,而是Circle本身的参考.
对象的继承

一个对象的构建函数可以借助它的prototype对象继承某个对象的所有属性

subfunction_name=new superFunction_name(...)

propotype 对象是用力定义由建构函数建立对象的共用属性和方法,所以将一个对象指定给它,使的prototype对象拥有此对象的所有属性和功能

例如

function Circle(radius)

{

this.radius=radius;

}

funcion colorCircle(radius,color){

this.radius=radius;

this.color=color;

}

function _toString{

return "cicle:="+this.radius;

}

colorCircle.prototype=new Circle(0) // 或者 new Circle,继承Circle所有的属性

colorCircle.prototype.toString=_toString; // 重载toString

constructor是prototype对象的一个属性,是对象构造函数的参考

function someFunc(){

...

}

x=new someFunc();

alert(x.constructor==someFunc);

会显示true

但是如下

function superFunc(){

}

function subFunc(){

}

x=new subFunc(); // x.constructor==subFunc

subFunc.prototype=new superFunc;

y=new subFunc(); // y.constructor==superFunc

alert(x.constructor==y.constructor);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: