从对象创建 到构造函数以及原型对象(prototype的使用,属性的共享)

来源:互联网 发布:分治策略的算法 编辑:程序博客网 时间:2024/05/16 18:13
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>

<script>

//对象创建

/*var s={};     //这里的花括号里面是没有值得
s.name="ww3";
s.age=32;
s.show=function(){
alert(s.name+":"+s["age"]);
}
s.show();*/


/*var s={             //这里的花括号里面是有值得
name:"wws",    //这里是用,分割的
age:32,
show: function(){
alert(s.name+":"+s.age)
}
}
s.show();*/
/*//直接创建
var s=new Object();
s.name="wws";
s.age=32;

alert(s.name);*/


//以上方法都有一种局限,就是只能创建单一的对象,
/*//构造函数,可传递参数,原型对象通过构造函数来实习
function Person(name,age){
this.name=name;
this.age=age;
this.show=function(){alert(this.age);}
}
var s=new Person("JK",32);   //多次实例化,多次创建对象,这里没个对象都会调用属性和方法作为自己的属性和方法,这样的空间占用比较多
var d=new Person("mk",20);
s.show()
alert(s.constructor==Person) //用于验证对像所是否引用原型对象;
alert(s instanceof Person)  */


function Cat(name){

this.name=name;
this.show=function(){
alert(this.name);
}

var c1=new Cat("小黄");
var c2=new Cat("小黄");
//c1.show();
//c2,show();

alert(c1.show==c2.show);//测试是否相等,结果flase,两者的地址簿相同,表示每个实例化都给自己配置了一个独立的空间

*/

//使用prototype可解决,多个实例化共享一个对象属性
function Cat(name){
this.name=name;
}
Cat.prototype.show=function(){    //用prototyp设置原型对象的属性,这里的属性可共享
alert(this.name);
}
var c1=new Cat("大黄");
var c2=new Cat("小黄");
alert(c1.show==c2.show);  //这里的show表示原型对象的地址,结果为true
</script>
</head>


<body>
</body>
</html>
0 0
原创粉丝点击