日期:2014-05-16  浏览次数:20429 次

JavaScript对象的理解
以前一直不理解JavaScript的对象到底是怎么回事,前两天网上看了一片文章,部分内容如下:

var o = {}; // 我发现了一个东西。  
o.eat = function(){return "I am eating."}  // 我发现它会吃;  
o.sleep = function(){return "ZZZzzz..."}  // 我发现它会睡;  
o.talk = function(){return "Hi!"} // 我发现它会说话;  
o.think = function(){return "Hmmm..."} // 我发现它还会思考。  
 
var Human = new Function(); // 我决定给它起名叫“人”。  
Human.prototype = o; // 这个东西就代表了所有“人”的概念。  
 
var h = new Human(); // 当我发现其他同它一样的东西,  
alert(h.talk()) // 我就知道它也是“人”了! 

看完之后似乎明白了点什么,写下了跟大家一起分享:
在这里上面作者的观点为先有对象,然后由对象抽象出类,不过我还是钟情与java的理解方式,由类创建对象,但是在这里不讨论这个母鸡与鸡蛋的问题。
废话不多说,介绍一下我的观点:
1.首先创建一个Dog类:
var Dog = new Function();
2.抽象出这个类的一些属性:
Dog.prototype.name="";        //跟人一样,每个狗定义一个名字
Dog.prototype.sleep = function(){return "ZZZzzz..."}  //狗也会睡觉
Dog.prototype.go="run";       //狗都会跑

3.由dog类创建一个狗的实例
var aa = new Dog();
alert(aa.name+"  "+aa.sleep()+"   "+aa.go);     //每个狗都特有的属性
aa.name="豆豆";                             //一只我认识的狗叫豆豆
alert(aa.name+"  "+aa.sleep()+"   "+aa.go);     //现在就是我认识的这只狗的属性