日期:2014-05-17 浏览次数:20968 次
文西马龙:http://blog.csdn.net/wenximalong/
记不住,和不知道是两回事,记住最常用的,记不住的,学会查找。
js面向(基于)对象编程—类(原型对象)与对象
对象—Object类
Object类是所有javascript类的基类,提供了一种创建自定义对象的简单方式,不需要程序员再定义构造函数。
主要属性:
constructor—对象的构造函数
prototype—获得类的prototype对象
static性质
主要方法:
hasOwnProperty(property)—是否属于本类定义的属性
isPrototypeOf(object)—是否是指定类的prototype
propertylsEnumerable(property)—是否可列举的属性
toString()—返回对象对应的字符串
valueOf()—返回对象对应的原始类型值
<script language="javascript">
function getAttributeValue(attr){
	alert(person[attr]);
}
var person=new Object();
person.name="zs";
person.age=18;
getAttributeValue("name");
getAttributeValue("age");
</script>var i=new Number(10); // <====> var i-10;
Number.prototype.add=function(a){ // 所有Number对象都有一个add方法
	return this+a;
}
window.alert(i.add(10).add(30)); //在这里,上面代码中的this就是i
var b=90;
window.alert(b.add(40));<html>
	<head>
		<script language="javascript">
			//创建Person实例
			function Person(){
			}
			var p1=new Person();
			p1.name="sp";
			//初步体验Object类
			//对比上面的,可以用Object直接来创建对象
			var p1=new Object(); //此时p1就是一个对象
			p1.name="sp"; //和上面是等价的
			window.alert(p1.constructor); //所有的类都是Object的子类,constructor是从Object来的
			//javascript类的所有基类都是Object类,和java有点像,java所有类的超类都是Object
			//Number类,内置的,javascript支持Number对象,该对象是原始数值的包装对象
			var i1=new Number(10); //<====> var i1=10;
			window.alert(i1.constructor);
			var i2=10;
			window.alert(i2.constructor);
			//为什么说是等价的,通过上面查看构造函数,就可以看出来了
			//我们可以给类添加方法
			Number.prototype.add=function(a){
				return this+a;
			}
			window.alert(i1.add(10).add(30)); //输出50
		</script>
	</head>
	<body></body>
</html><html>
	<head>
		<script language="javascript">
			//体验Array内置类
			var arr1=new Array(3); //3代表可以有3个数据
			arr1[0]="George";
			arr1[1]="John";
			arr1[2]="Thomas";
			//遍历该数组
			for(var i=0;i<arr1.length;i++){
				document.writeln(arr1[i]+" ");
			}
			//使用Array提供的方法,颠倒数据。既然都提供了,何必有自己重新发明轮子去做颠倒呢。
			arr1.reverse();
			document.write("<br/>");
			for(var i=0;i<arr1.length;i++){
				document.writeln(arr1[i]+" ");
			}
			/*
			请思考给js的Array对象扩展一个find(val)方法,当一个Array对象调用该方法的时候,如果能找到val则返回其下标,否则返回-1。
			*/
			//现在我们一起看如何给所有Array对象添加一个方法 find(val);
			//现在只考虑一维数组,只考虑找到一个就行,暂时不考虑多个的问题
			Array.prototype.find=function(val){
				//遍历数组this
				for(var i=0;i<this.length;i++){
					if(val==this[i]){
						return i;
					}
				}
				//如果没有
				return -1;
			}
			document.write("<br/>");
			document.writeln("John 下标="+arr1.find("John"));
		</script>
	</head>
	<body></body>
</html>function a(){
	var i=0;
	function b(){
		alert(++i);
	}
	return b;
}
var c=a();
c();