js自定义类与对象

js中创建自定义类与创建对象:
js创建类与AS3,java都有很大的不同,,,下面来看看他的庐山真面目。。
由于js也是一个面向对象的编程语言所以也存在像其他语言那样的创建自定义的类,和通过类来创建对象。
js的类是有一下三部门组成
1、构造函数
2、属性
3、方法
自定义一个类:

function MyClass(id,age,name)
{
    this.id = id;
    this.age = age;
    this.name = name;
}

从这个类的定义形式可以看出,js定义类的形式和其他语言有很大的不不同,其他语言定义类需要对类进行正式的定义,而js只是使用了function关键字来定义一个构造函数就可以了。接下来你就可以使用new关键字来创建一个对象了。。

var myClass = new MyClass(12,23,meimei);

从这个类定义中我们也可以看到js和其他语言中的不同:

this.id = id;

其实id这个变量我们并没有定义。在其他语言中一定会报错的。。但是js却可以自动把id当作属性,因为js无需事先定义好类的属性,只需为属性赋值,js会自定创建这些属性的。其实对象也同样使用。当为某个对象事先未定义的属性赋值时,js将自动创建这些属性。
这种自由创建属性的方式看起来很好,却带来了很多的弊端,当我们在在拼写已有的属性时,如果不小心拼错了,这样就会给对象新加一个属性。。
为了防止上面的情况出现我们可以通过像其他语言那样使用set与get:

function MyClass(id,name) 
   {
            this.id = id;
            this.name = name ;

    }
     MyClass.prototype.getId = function ()
     {
        return this.id;
     }
     MyClass.prototype.setId = function (id)
     {
        this.id = id;
     }
     MyClass.prototype.getName = function ()
     {
        return this.name;
     }
     MyClass.prototype.setName = function (name)
     {
        this.name = name ;
     }
     var my = new MyClass(123,"weizi");
    document.write(my.getId());
    document.write(my.getName());
    my.setId(345);
    document.write(my.getId());

下面是一个具体的实例:

<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>标题页</title>
<script language="javascript" type="text/javascript">
   function MyClass(id,name) 
   {
            this.id = id;
            this.name = name ;

    }
     MyClass.prototype.getId = function ()
     {
        return this.id;
     }
     MyClass.prototype.setId = function (id)
     {
        this.id = id;
     }
     MyClass.prototype.getName = function ()
     {
        return this.name;
     }
     MyClass.prototype.setName = function (name)
     {
        this.name = name ;
     }
     var my = new MyClass(123,"weizi");
    document.write(my.getId());
    document.write(my.getName());
    my.setId(345);
    document.write(my.getId());
</script>
</head>
<body>
    <p id = "my"></P>
</body>
</html>

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。