日期:2014-05-17 浏览次数:20960 次
文西马龙: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();