手机版

javascript面向对象编程函数也是一个类

时间:2021-10-26 来源:互联网 编辑:宝哥软件园 浏览:

但是javascript中没有类的概念,所谓的类也是模拟的。类成员和私有成员是通过函数和闭包来模拟的(关于闭包,请参见跨越边界3360闭包)。在这里,我们将以更简单的方式理解javascript中的“类”,避免一些生硬的原则。因为类是用函数模拟的,所以创建类的关键词是函数。我们创建一个坐标点类。函数Point() { this。x=0;这个。y=0;};var zero Point=new Point();Alert('当前坐标值(x:' zeropoint.x ',y : ' zero point . y ')');image

大家都知道非静态类成员的访问需要通过对象来完成,所以先创建一个Point类型的对象,然后通过这个对象完成x轴和y轴坐标值的访问。从语法上讲,创建javascript类对象的过程与C#相似,但实现机制不同。这里的new创建了一个对象,后续的Point()函数在执行时将这个对象指向这个新对象。这个。x和这个。点中的y是点类的两个公共成员,因此点的对象可以直接访问它们。当涉及到类成员或对象成员时,不可避免地会提到可访问性。在javascript类中,也有公共成员和私有成员,但是细节不同。javascript的私有成员也是不能通过类外的对象进行操作的成员。事实上,私有成员不能在类的内部成员之间访问。在一个类中,只有私有成员和私有成员可以互相访问。你可以认为其他成员没有足够的权限去操作这些私人的东西,但是如果你有特权,那就不一样了,会被私人和公开使用。像普通变量声明一样,私有变量使用var关键字。私有方法可以使用var声明变量来接收方法对象,也可以像普通方法一样构造。函数Lady(){ var age=30;Var name='花椰菜';Var think=function() {alert('其实我今年是'年龄'));};function fantasy(){ alert(' fantasy变成20岁了。);};这个。introduction=function(){ alert('我叫' name ',今年20岁。);};};var young Lady=new Lady();警觉(young lady . age);//结果未定义young lady . think();//不支持young lady . fancy();//不支持以上为Lady类。年龄、思维和想象力都是私人成员。思考和花哨的方法可以访问年龄和姓名。思考和花哨的方法也可以互相调用。但它们是私人的,所以被创造的年轻女性对象不能叫年龄、思想和想象力,当然也不能叫名字。如果私人成员只能互相称呼,其实就失去了私人成员的意义。提供javascript的特权成员可以在外部世界和私有成员之间架起一座桥梁。特权是一种公共成员,包括普通公共成员、特权成员和客体公共成员。特权是在此建立的成员。XX方式在一个班。可以通过对象调用它们,也可以访问私有成员,还可以为私有成员建立访问通道。函数Lady(){ var age=30;这个。名称='菜花';Var think=function() {alert('其实我今年是'年龄'。' );};function fantasy(){ alert(' fantasy变成20岁。' );};这个。introduction=function(){ alert('我叫' this。名’,而我今年‘年龄’岁。' );};};var young Lady=new Lady();年轻的女士。引入();//介绍image

公共成员的创建不是在类中编码的,而是由类的原型创建的。普通的公共成员直接添加到类的原型中,原型是一个类似JSON对象的成员集对象。当我们创建一个对象时,我们可以认为原型类中的成员将作为一个整体复制到新的对象对象中。var young Lady=new Lady();年轻的女士。引入();//introducelady . prototype . hobby='联机';lady . prototype . getname=function(){返回这个。名称;};var Lady 2=new Lady();警报(lady2。GetName());警报(lady2。爱好);上面的代码通过原型将公共成员GetName方法和Hobby属性添加到Lady类中。因为它们是公共成员,所以它们可以与最初用于该类的特权成员相互访问。因为公众成员可以互相拜访。对上述代码进行一些修改。如下。var young Lady=new Lady();Lady.prototype.Hobby=“上线”;lady . prototype . getname=function(){返回这个。名称;};警惕(年轻女士。GetName());警惕(年轻女士。爱好);首先创建Lady对象,然后修改类成员。先前创建的对象也有新成员。这就是原型作为类原型的优势。这里可以简单理解为原型是类对象的模板,模板的修改会影响到所有的类对象。添加普通成员时,也可以批量添加,直接给原型分配一个新的JSON对象。但是要注意,原来的原型已经被替换,替换之前创建的对象是指旧的原型对象,所以替换原型之前创建的对象不会有Hobby和GetName成员。lady . prototype={ Hobby : ' go online ',getname 3360 function(){ returnthis . name;} };var young Lady=new Lady();警惕(年轻女士。GetName());警惕(年轻女士。爱好);除了在构建类时添加公共成员,还可以直接对对象执行成员操作。这将在本系列的第二篇文章中介绍。在这里添加,直接添加到对象的成员也是公共成员,这些成员也可以访问原来在类中的公共成员。年轻的女士。SetName=函数(名称){ this。Name=name};年轻的女士。SetName('蔡明');警惕(年轻女士。GetName());我已经讲过类成员了,但是下次我会讲类继承。(如有不当表述请指正)

版权声明:javascript面向对象编程函数也是一个类是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。