JavaScript(二)-15-(JS自定义对象)



【JavaScript自定义对象】
如果想要自定义对象,应该先对对象进行描述,js是基于对象,不是面向对象。
不具备描述事物的能力。若用面向对象思想编写js,就要先描述,在js中,可以
用函数来模拟面向对象中的描述。


(以下代码省略了<html>,<script>等标签,且各个代码不要放在同一个文件中)
【代码1】


	//用js来描述人
	function Person(){//相当于构造器
		alert("person run");
	}
	
	//通过描述进行对象的建立。new
	var p = new Person();//【特别注意】这里千万不要写Person p = new Person()
	//以上程序运行,弹出person run




【代码2】

	function Person(){
		
	}
	
	var p = new Person();
	
	//【重点】动态给p对象添加属性。直接使用p.属性名即可。
	p.name = "zhangsan";
	p.age = 29;
	
	//【重点】如果定义的p对象的属性赋值为一个函数,即是给p对象添加一个方法。
	p.show = function(){
		alert("show:" + this.name + ":" + this.age);//【特别注意】这里必须有this
	}
	p.show();
	//以上程序运行,弹出show:zhangsan:29



【代码3】

	var obj = new Object();
	obj.name = "god father";
	obj.age = 2012;
	alert(obj.name + ":" + obj.age);//弹出god father:2012
	
	//代码3说明在js中,只要new一个对象,都可以随便往里面添加属性信息,哪怕是上帝Object



【代码4】

	function Person(name,age){
		this.name = name;
		this.age = age;
	}
	var p = new Person("wangcai",20);
	alert(p.name);//弹出wangcai



【代码5】

	function Person(){
		this.setName = function(name){
			this.name = name;
		}
		this.getName = function(){
			return this.name;
		}
	}
	var p = new Person();
	p.setName("xiaoqiang");
	alert(p.getName());//弹出xiaoqiang
	//代码5演示了js自定义对象中的set和get方法,【特别注意】与Java不同,以上这些this一个都不能省




【代码6】

	var pp = {
		
		//定义一些成员
		"name":"小明","age":38,
		"getName":function(){
			return this,name;
		}
	}
	alert(pp.age + ":" + pp.getName());//弹出38:小明
	alert(pp["age"] + ":" + pp.getName());//弹出38:小明
	//以上两种取age的方式均可,【注意】第一种:对象.属性名   第二种:对象.["属性名"]
			
//代码1-5是先描述,再定义实体对象,代码5是直接用{}来定义一个实体,在其内可以封装键值对,格式是"键":值,键值对之间用逗号隔开




【代码7】


	function Person(name,age){
		this.name = name;
		this.age = age;
		
		this.setName = function(name){
			this.name = name;
		}
		
		this.getAge = fucntion(){
			return this.gae;
		}
	}
	var p = new Person("xiaoqiang",22);
	for(x in p){
		document.write(x + ",");
	}
	//输出name,age,setName,getAge,发现将对象中的属性全部遍历出来
	for(y in p){
		document.write(y + ":" + p[y]);//【特别注意】这里写p.y或p["y"]是遍历不出来信息的
	}
	//遍历出对象中所有键值对信息,如setName:function(name){this.name=name;}



【用js实现map集合】


	var map = {
		8:"zhangsan",9:"lisi",10:"wangwu"		//【特别注意】这行最后不能写任何标点符号,否则出错
	}
	var val1 = map[8];
	document.write(val1);//输出zhangsan




【习惯】在js中定义名称时候明确其类型,如:
				var iN = 5;
				var bX = true;
				var s = "abc";
				var oMap = {
					8:"zhangsan",9:"lisi",10:"wangwu"
				}


这样再次看到这些变量,就知道iN是int,bX是boolean,s是string,oMap是Object(实体对象)


【注意】自定义对象Person也具备原型,即Person.prototype,那么可以通过原型在后续对自定义
对象进行功能扩展,且一旦定义了相关功能,所以Person都具备该功能。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值