体验盒子

时间是治疗心灵创伤的大师,但绝不是解决问题的高手。

Javascript系列教程:面向对象讲解(四)

2010年6月28日 jQuery 没有评论 | 热度:49 ℃

私有属性、实例属性、类属性

–这段知识是基于网上流传的李赞红的JS-OOP.ppt讲解的。

  • 私有属性只能在构造函数内部定义与使用;
  • 实例属性必须在对象实例化后使用;
  • 类属性直接通过类名去使用

例:

1、私有属性

var Me={
_name:"Wang Hongjian",
_age:23
}

调用方法:Me._name,假如现在声明另一个空对象Her,由于作用域Her无法调用_name属性。

2、实例属性:实例属性可以有两种声明方式,一是通过原型函数prototype声明;另一种是通过this关键字声明的。

<script type="text/javascript">
var Me=function(){
this._age=23;
this._name="Wang Hongjian";
Me.prototype._sayHi=function(){
alert("Hello,everybody");
}
}
var M=new Me();
alert(M._name + "'s age is " + M._age);
M._sayHi();
</script>

3、类属性:直接通过类名去使用

<script type="text/javascript">
var Me={};
Me.sayHi="Hi,everybody!");
alert(Me.sayHi);
</script>

私有方法、实例方法、类方法

与属性相对应,方法也可分为私有、实例、及类方法。私有方法只可在对象中使用;实例方法必须在对象实例化后才能使用;类方法可以直接通过类名使用。

1、私有方法

<script type="text/javascript">
var Me={
_sayHi:function(){
alert("Hello,everybody!");
}
}
Me._sayHi();
</script>

2、静态方法:语法及使用与静态属性类似

<script type="text/javascript">
var Me=function(){
this.sayHi=function(){
alert("Hello,everybody!");
};
Me.prototype.readBook=function(){
alert("人生若只初相见,何事秋风悲画扇?");
};
}
var M=new Me();
M.sayHi();
M.readBook();
</script>

3、类属性

<script type="text/javascript">
var Me={};
Me.sayHi=function(){
alert("Hi,everybody!");
}
Me.sayHi();
</script>

Javascript系列教程:面向对象讲解(三)

2010年6月28日 jQuery 没有评论 | 热度:44 ℃

对象的访问修饰条符

<script type="text/javascript">
function Person(){
var Name="Wang Hongjian";
var Age=22;//私有成员
this.Age=23;//公有成员

var Job="工程师";//局部成员
this.GetJob=function(){
return Job;
}
alert(Age);
alert(this.Age);
}
var P=new Person();
alert(P.Age);//访问公共成员
alert(P.GetJob());
</script>

当然其中也可通过

this.GetAge=function(){
return this.Age;
}

来访问其公共成员.

Javascript系列教程:面向对象讲解(二)

2010年6月28日 jQuery 没有评论 | 热度:39 ℃

对象的声明

js对象的声明语法:

var obj=new Object();// 注意这里的是大写O

这样就声明了一个空的对象,该语法可简写为

var obj={};

还记得数组对象Array的声明方式吗?var arr=new Array();它可以简写为var arr=[];注意一个是{},一个是[]。

·object与array之间的联系

<script type="text/javascript">
//array
var arr=["wang","hong","jia"];
for(var i=0;i<arr.length;i++)
{
alert(arr[i]);
}
//object
var obj={FirstName:"Wang",LastName:"Hongjian"};
alert("obj.FirstNam:" + obj.FirstName);
alert("obj.LastName:" + obj.LastName);
</script>

严格讲它们之间联系主要是数据结构组成方式相同,数组可以理解为下标为0,1,2,3……这种固定隐式的方式来标示,即Key:Name中索引 Key从0递增;而对象则是一个Key:Name,其中Key由用户定义,也即:

var arr=[Name1,Name2,Name3,...];
var obj=[Key1:Name1,Key2:Name2,Key3:Name3,...];

前文讲到可以也var obj={};来简写实例化对象,那么具有相同的属性可以以var arr=[];的方式来简写数组。

我一直提到js中的的实例化对象,以.net的对象为例,个人理解是js的封装对象的同时实例化对象,也就是“即时使用”吧(个人词语)。
如在.net 中

public class Person()
{
private int _age=23;
private string _name="Wang Hongjian";
}

js 版本:

var Person={age:23,name:"Wang Hongjian"};

对象的方法

var Me={Name:"Wang Hongjian",Action:function(){alert("I’m commbating");}}
Me.Action();

这样可以加深方法也是对象的印象。 :D

对象属性和方法的访问

var Person={Age:23,Name:"Wang Hongjian",Action:function(){alert("I’m commbating");}}

以此为例访问name属性可以有以下方式

Person.name
Person["name"]

访问Action方法

Person.Action;
Person["Action"]

执行对象的方法:Person.Action();

修改对象的属性和方法

Person.name="Hongjian";
Person.Action=function(){
alert("I can be strong");
};

删除对象的属性和方法

delete Person.name;
alert(Person.name);//返回undefined

Javascript系列教程:面向对象讲解(一)

2010年6月28日 jQuery 没有评论 | 热度:72 ℃

javascript Frameworks 外连整理

2010年6月21日 jQuery 没有评论 | 热度:102 ℃
加载中……