js中没有类的说法,但可以使用函数来模拟类。 一个函数就可以是一个类: function Person(){ } 存在以上函数后,你就可以使用var p = new Person();来构造一个Person的实例。而类是有属性和方法的,js则通过this来实现了属性和方法的添加。 function Person(){ this.name = "myName"; this.age = 20; this.eat = function(food){ alert("eat:"+food); } } 这样的定义使Person构造出来的对象都具有一些属性和方法了。例如之前声明的p,此时就有p.name = "myName"和p.age = 20,同时,p.eat("egg")则会弹出对话框“eat:egg”。这不就是一个类的实现吗? 所有的类都是继承自Object的,但var a = new Object(),a则是Object的一个实例,而不是一个新的类。就像前面的p一样,难道你还可以使用var b = new p()?显然是不行的。 那么js是怎么实现继承的呢?说起来js中类的实现和继承都有很多种方法,一时我也想不出。就举一个最简单的吧。 假设前面定义了那个Person类,现在要让一个Student类继承它,怎么做? function Student(){ } Student.prototype = new Person(); 如上代码就实现了js中的继承关系,假如此时声明一个Student的对象: var s = new Student(); alert(s.name);//弹出“myName” s.eat("egg");//弹出“eat:egg” 在新定义的类中,你可以重写所有的属性和方法,比如 function Student(){ this.eat = function(food){ alert("learn first!"); } } 之前的eat调用会弹出eat:food,此时再次调用eat,则会报出learn first!,说明方法已经被重写了。在Student中,你还可以定义新的方法,新定义的方法,Person的对象都不具有。 给你推荐一个本书《javascript高级程序设计》,李松峰和曹力翻译的,挺好的,也挺入门的。才50多块钱,想想50多块钱就能掌握一门技术,值得!
js可否自定义类
最新推荐文章于 2024-06-26 21:53:31 发布