重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
javascript有类的概念。
创新互联专注为客户提供全方位的互联网综合服务,包含不限于网站建设、网站制作、林甸网络推广、重庆小程序开发、林甸网络营销、林甸企业策划、林甸品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联为所有大学生创业者提供林甸建站搭建服务,24小时服务热线:13518219792,官方网址:www.cdcxhl.com
js里面类通过function进行定义,有些类似c++的struct定义。
代码示例:
function MyClass(){
this.a = '2';
this.show=function(){
alert('1');
}
}
var myClass = new MyClass();
alert(myClass.a);//获取属性
myClass.show();//调用类方法
首先,对象的定义大致如下:
对象(object)是JavaScript的核心概念,也是最重要的数据类型。JavaScript的所有数据都可以被视为对象。
简单说,所谓对象,就是一种无序的数据集合,由若干个“键值对”(key-value)构成。
var o = {
p: "Hello World"
};
上面代码中,大括号就定义了一个对象,它被赋值给变量o。这个对象内部包含一个键值对(又称为“成员”),p是“键名”(成员的名称),字符串“Hello World”是“键值”(成员的值)。键名与键值之间用冒号分隔。如果对象内部包含多个键值对,每个键值对之间用逗号分隔。
我们从两个层次来理解。
(1)“对象”是单个实物的抽象。
一本书、一辆汽车、一个人都可以是“对象”,一个数据库、一张网页、一个与远程服务器的连接也可以是“对象”。当实物被抽象成“对象”,实物之间的关系就变成了“对象”之间的关系,从而就可以模拟现实情况,针对“对象”进行编程。
(2)“对象”是一个容器,封装了“属性”(property)和“方法”(method)。
所谓“属性”,就是对象的状态;所谓“方法”,就是对象的行为(完成某种任务)。比如,我们可以把动物抽象为animal对象,“属性”记录具体是那一种动物,“方法”表示动物的某种行为(奔跑、捕猎、休息等等)。
其次,典型的面向对象编程语言(比如C++和Java),存在“类”(class)这样一个概念。所谓“类”就是对象的模板,对象就是“类”的实例。JavaScript语言没有“类”,而改用构造函数(constructor)作为对象的模板。
前面说过,“对象”是单个实物的抽象。所以,通常需要一个模板,表示某一类实物的共同特征,然后“对象”根据这个模板生成。
所谓“构造函数”,就是专门用来生成“对象”的函数。它提供模板,作为对象的基本结构。一个构造函数,可以生成多个对象,这些对象都有相同的结构。
javascript是一个“基于对象”的编程语言,不是面向对象的编程语言。
你要知道javascript中的function定义的函数实际上就是Function对象实例。
例如:
function demo(x){
alert(x);
}
实际上等价于:
Function demo = new Function("x","alert(x)");
所以你如果想要用javascript来模拟面向对象编程(例如Java的类),那么就可以用function来模拟Class,用function的原型prototype或者嵌套function来模拟类的方法或者属性。下面给你一个简单的例子:
//模拟学生类,可以带参数,例如initName
function Student(initName){
var name = initName; //模拟学生类的属性name
}
Student.prototype.printName = function(){ //定义Student类prototype中的printName函数
alert(this.name);
}
测试时可以这样写:
var student = new Student("张三"); //创建一个“Student对象”,实际上是一个Function实例对象
student.printName(); //执行student对象的printName函数
没有! 不过 类 是什么要看你怎么定义了.js可以模拟类似java的class
每个对象都有个属性: prototype 就是原型咯 原型也是一个对象而已
js不是通过类来规范对象的属性和行为的,而已通过一个对象(原型对象)
* 标准化面向对象的代码 *
---------------------------------------------------------------------------
1.原型式继承
1) 原理: 对象的构造函数可以从其他对象中继承方法,它创建出一个原型对象后,所有
其他的新对象都可以基于这个原型对象来构建
2) 原型式继承的设计适用于单继承而非多继承
3) 使用示例:
function Person(name){
this.name = name;
}
Person.prototype.getName = function(){
return this.name;
}
function User(name, password){
this.name = name;
this.password = password;
}
User.prototype = new Person(); //关键代码!继承Person对象的所有方法
User.prototype.getPassword = function(){
return this.password;
}
2.类式继承
Function.prototype.method = function(name, fn){
this.prototype[name] = fn;
return this;
}
Function.method('inherits', function(parent){
var depth = 0;
var proto = this.prototype = new parent();
this.method('uber', function uber(name){
var func, ret, v = parent.prototype;
if(depth){
for(var i=depth; i0; --i){
v = v.constructor.prototype;
}
func = v[name];
}else{
func = proto[name];
if(func == this[name]){
func = v[name];
}
}
++depth;
ret = func.apply(this, Array.prototype.slice.apply(arguments, [1]));
--depth;
return ret;
});
return this;
});
Function.method('swiss', function(parent){
for(var i=1,len=arguments.length; ilen; ++i){
var name=arguments[i];
this.prototype[name] = parent.prototype[name];
}
return this;
});
function Person(name){
this.name = name;
}
Person.method('getName', function(){
return this.name;
});
function User(name, password){
this.name = name;
this.password = password;
}
User.inherits(Person);
User.method('getPassword', function(){
return this.password;
});
User.method('getName', function(){
return 'My name is ' + this.uber('getName');
});
JavaScript 是面向对象的语言,引用数据类型都是对象,包括函数也是对象,同时还可以通过 Object 对象自定义对象。
但是,和其他面向对象语言(如 Java 等高级语言)比,也有很大差异,JS 中没有类或接口的概念,即不能直接定义抽象的类,也不能直接实现继承。不过,为了编程的方便,我们可以在 JS 中模拟类和继承的行为。
创建对象实例或类(虽然没有类的概念,但是可以把用于创建新对象的对象看作类),可以通过构造函数来实现,构造函数就是具有一系列属性和行为作为函数体的函数,可以通过函数参数传入值。它就相当于 Java 中类的构造函数,需要时可以通过 var instanceObj = new ConstructorFunc(para1,para2,...) 来创建对象(实例)。
JS 的对象中还有一个重要概念,即原型。每个对象都有原型,原型也是一个对象,可以看做是构造函数的映像,是创建实例的模型。对象(类)的属性 prototype 即是对原型对象的引用,创建实例后,也有属性 __proto__ 指向原型对象,但该属性是隐含的。
由于不断创造新对象(实例),一级一级的传递原型对象,即可构成原型链。通过原型链,即可实现继承。首先将父类对象的实例给子类的原型 ChildCons.prototype = new ParentCons(),再在子类构造函数中调用父类构造函数将继承的属性初始化。继承的变通方法还有很多,可以参考一些资料。
js里面的类就是一个函数
跟java、C#、C\C++定义类有很大的区别
具体的定义一个类可以用下面这种方式
function student(){
}
上面这个方法定义了一个类(当然你也可以说他是定义了一个方法)
可以这样实例化这个类的对象
var stu = new student();
当然了,这个类他没有属性也没有自己的方法
下面再定义一个类,他有自己的一个方法
function student1(){
this.getAge = function(){
return 18;
}
}
此时如果实例化一个student1类的对象,该对象会有一个getAge的方法。
接着定义一个类,有自己的初始化操作(相当于类构造函数里面的代码)
function student2(){
var age = 0;
age = 18; //这句代码和上面那句代码会在实例化该类对象时执行。
this.getAge = function(){
return age;
}
}
当然了,js也可以继承,但是在这里就不一一列举了。