1.概述在Java语言中,我们可以定义自己的类,并根据这些类创建要使用的对象。在Javascript中,我们还可以定义自己的类,比如User类、Hashtable类等等。目前,Javascript中有一些标准类,如日期、数组、正则表达式、字符串、数学、数字等。这为我们编程提供了很多便利。但是对于复杂的客户端程序来说,这些远远不够。与Java不同,Java2为我们提供了很多标准类,基本满足了我们的编程需求。但是Javascript提供的标准类很少,很多编程需求需要我们自己去实现。比如Javascript没有Hashtable,处理键值非常不方便。所以我个人认为一个完整的Javascript对象视图应该是这样的:。
二、基本概念1、自定义对象。根据JS的对象扩展机制,用户可以自定义JS对象,类似于Java语言。与自定义对象相对应的是JS标准对象,如日期、数组、数学等。2.原型在JS中,这是一种创建对象的属性和方法的方式。新的属性和方法可以通过原型添加到对象中。有了原型,我们可以向JS标准对象添加新的属性和方法。例如,对于String对象,我们可以添加一个新的方法trim()。与严格的编程语言(如Java)不同,我们可以在运行时向JS对象动态添加新属性。语法规则1、对象创建方法1)对象初始值设定项方法格式:对象名称={property1:value1,property2:value2,…,property:valuen}属性是对象的属性,而value是对象的值,可以是字符串、数字或三个对象之一,例如:varuser={name: "user1 "。User={name: "user1 ",job: {salary:3000,title: programmer}也可以这样初始化对象的方法,例如:var user={name: "user1 ",age:18,getname : function(){ return this。}}后面我们会重点介绍构造器模式,包括属性和方法的定义,同时也会讲解构造器模式。2)用构造函数的方式编写构造函数,用new的方式创建对象。构造函数可能采用了如下构造参数:函数用户(姓名、年龄){this。name=namethis.age=年龄;this.canFly=false} var use=new User();2.定义对象属性1)JS中可以为对象定义三种类型的属性:私有属性、实例属性和类属性。与Java类似,私有属性只能在对象内部使用,实例属性必须被对象的实例引用,类属性可以直接被类名引用。2)私有属性定义私有属性只能在构造函数内部定义和使用。语法:var propertyName=value;示例:函数User(age){ this . age=age;var isChild=age12this.isLittleChild=isChild} var用户=新用户(15);alert(user . islittlechild);//正确的方式提醒(user . ischild);//错误:对象不支持此属性或方法。3)定义实例属性有两种方式:原型方式,语法格式:functionname。prototype.propertyname=valuethis这样,语法格式:this.propertyName=value。请注意,在下面的示例中,它使用的位置可以是字符、数字和对象。示例:function user(){ } user . prototype . name=" user 1 ";user . prototype . age=18;var user=新用户();alert(user . age);————3354335433543354————功能用户(姓名、年龄、工作){ this.name=" user1this.age=18this.job=job} alert(user . age);3)类属性定义的语法格式:functionname。propertyname=值,例如:functionuser () {} user。max _ age=200用户。MIN _ AGE=0;警报(用户。MAX _ AGE);参考JS标准对象的类属性:Number。MAX_VALUE //最大值数学。PI //pi 4)对于属性的定义,除了上面的形式化方式之外,还有一种非常特殊的定义方式,语法格式:obj[index]=value示例:函数user (name) {this。name=namethis.age=18这个[1]=“好的”;这[200]=“年”;} var用户=新用户(“User 1”);警报(用户[1]);在上面的例子中,需要注意的是,与获取年龄属性的这个[1]不同,这个[0]不能用于获取姓名属性,即索引定义的必须被索引引用,而不是索引定义的必须被正常引用。3)定义对象方法。1)JS中可以为对象定义三种类型的方法:私有方法、实例方法和类方法。类似于Java:私有方法只能在对象内部使用实例方法,类方法只能在对象实例化后使用。它们可以由类名直接使用。注意:方法的定义不能用上面提到的索引方法来完成。2)定义私有方法私有方法必须在构造函数体中定义,并且只能在构造函数体中使用。
语法:函数方法名(arg1,…,argn) {}示例:函数用户(name) {this。name=name函数GetNameLength(NameStr){ return NameStr . length;} this . NameLength=GetNameLength(this . name);}3)定义实例方法有两种方式:prototype,在构造函数外使用,语法格式为functionname。prototype.methodname=方法;或者函数名。prototype . method name=function(arg 1,…,argn){ };这种方式,用在构造函数内部,语法格式:this.methodName=method或者这个。方法名=函数(arg1,…,argn){ };在上面的语法描述中,method是一个外部存在的方法,methodName要定义的对象的方法是指一个外部方法直接赋给对象的某个方法。以函数的方式定义对象方法(arg1,…,argN){},应该是开发者所掌握的。定义实例方法的一些示例:示例1函数用户(名称){这。name=namethis.getName=getUserNamethis.setName=setUserName}函数getUserName(){返回this.name}函数集用户名(名称){ this.name=name}定义一些实例方法示例:示例2函数user (name) {this。name=namethis . getname=function(){ return this . name;};this . setname=function(new name){ this . name=new name;};}定义一些实例方法示例:示例3函数user (name) {this。name=name} user . prototype . getname=getUserName;user . prototype . setname=setUserName();函数getUserName(){返回this.name}函数集用户名(名称){ this.name=name}定义一些实例方法示例:示例4函数user (name) {this。name=name} user . prototype . getname=function(){ return this . name;};user . prototype . setname=function(new name){ this . name=new name;};4)定义类方法类方法需要在构造函数外部定义,可以直接被构造函数名称引用。语法:function name . method name=method;或者函数名。methodname=function (arg1,…,argn){ };示例:函数用户(名称){this。name=name} User.getMaxAge=getUserMaxAge函数GetUserMaxAge(){ return 200;}或user . getmaxage=function(){ return 200;};alert(user . getmaxage());4.属性和方法的引用1)从可见性的角度来看,私有属性和方法只能在对象内部引用。示例和方法可以在任何地方使用,但是它们必须被对象引用。类和方法可以在任何地方使用,但是不能被对象的实例引用(不像Java,静态成员可以被实例访问)。2)从对象层面,类似于Java bean的引用,可以进行深度引用。有几种方法:简单属性:obj.propertyName对象属性:obj.innerObj.propertyName索引属性:obj.propertyName[index]与上面类似,以便更深入地参考。3)在定义方面,索引定义的属性必须被索引引用。以非索引方式定义的属性必须以正常方式引用。注意:对象的方法不能由索引定义。5.属性和方法的动态添加和删除1)对于一个实例化的对象,我们可以动态地添加和删除它的属性和方法。语法如下(假设对象实例为obj):动态添加对象属性obj . new property name=value;add object method obj . new method name=method or=function(arg 1,…,ArgN){ } delete object property delete obj . property name delete object method delete obj . method name 2)示例:function user (name) {this。name=namethis.age=18} var用户=新用户(“User 1”);user.sister=" susanalert(user .姊妹);//贯穿删除user .姐弟;alert(user .姊妹);//错误:对象不支持属性用户。getmothername=function(){返回“Mary”;} alert(user . GetMainName());//通过delete user.getMotherName运行;alert(user . GetMethoName());//报告错误:对象不支持此方法。4.总结1。自定义对象机制是JS最吸引人的机制之一,对于C和Java程序员来说绝对是绝妙的!2.创建对象有两种方法:对象初始值设定项和构造函数。
3.对象属性和方法有可见性约束。不同的可见性属性和方法有不同的定义。
动词(verb的缩写)应用案例下面将采用一个应用案例:网购商城应用案例实施步骤:1。场景设计1)登录场景。
2)购物场景
3)解决方案
2.界面设计1)登录页面。
2)购物页面
3)结算页面
3.类图设计。
4.代码实现1)产品类。
2)ShoppingCart 。
3)购物课
4)购物卡解析器类
原地址:作者:陈基米。