博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

自己理解的javascript 的对象和类理解

Posted on 2015-01-19 17:32  绝交  阅读(281)  评论(0编辑  收藏  举报

首先需要先理解类和对象的意义,我个人理解如下:

类:对象的抽象化;

对象:类的实体;

javascript中没有class关键字和类的用法,只能用伪类来做类的,所以要用function来定义累的名字;

如:

function myClass(){

this.name="张三";

}

这样myClass方法才能用原型连接 prototype;这样才能扩展此类;

也可以用 new myClass();这个类

 

javascript中有对象,简单的写法就是 

var obj={name:"张三"}

因为obj本身就是一个对象,不能实例化(即不能用new关键字);

 

我自己从网上找了几个相关例子,自己也写了写,在此粘出代码希望可以更好的理解

var Person=(function(){
    function Person(){
        this.name='person';
        this.age=18;
        this.init=function(name,age){
            this.name = name;
            this.age = age;
        }
    }
    Person.prototype={
            k:function(){
                alert(this.name)
            },
            s:function(){
                alert(this.age)
            }
    }
    return Person;
})();

var Dog = (function(){
    function Dog(){
        this.name='dog';
        this.age=11;
    }
    return Dog;
})();

var p = new Person();
//p.k();
p.init('张三',70)
//p.k();
delete p.name;


Dog.prototype = Person.prototype;
Dog.prototype.init=function(name,age){
    this.name = name;
    this.age=age;
}
var d = new Dog();
//d.k();

Object.extend=function(destination,source){
    for(property in source){
        destination[property]=source[property];
    }
    return destination;
}
Object.prototype.extend = function(object){
    return Object.extend.apply(this,[this,object])
}

function Rect(){
    
}
//Rect.prototype=(new Person).extend({
//    add:function(){
//        alert('add');
//    },
//    show:function(){
//        alert('show')
//    }
//});

//var r = new Rect();
//r.show();
//r.k();

function JC(){
    
}
var j = new JC();
j.extend({
    a: function(){
        alert('a');
    },
    d:function(){
        alert('d');
    }
});
j.a();