您的位置:首页 > Web前端 > JavaScript

js的对象的原型方式

2012-08-17 08:06 190 查看
//原型方式-->重点prototype(是Object拥有的一个属性,因此所有的对象都拥有这个属性)创立对象

//此种方式建立对象不能传递参数,因为该构造函数体内是个空的。

function Dog(){}

Dog.prototype.name = "小毛";//属性值还可以是数组

Dog.prototype.age = 21;

Dog.prototype.get = function(name, age)

{

this.name = name;

this.age = age;

document.write("name:" + this.name + " , "+ "age:" + this.age );

}

//new Dog().get("野兽",24);

//另外一种用原型建立对象

function Cat(){}

Cat.prototype.name = new Array();

Cat.prototype.age = 3;

Cat.prototype.get = function()

{

document.write("name: " + this.name + " , " + "age:" + this.age,"<br/>");

}

var cat1 = new Cat();

cat1.name.push("张三");

cat1.name.push("李四");

cat1.age = 1;

cat1.get();

var cat2 = new Cat();

cat2.get();

//age是Number类型,是原型,它的值改变只是它的副本,并不会改变它本省。但是name是数组类型的,它是引用类型,所以它的值会改变它本省。

//使用原型和构造函数的方法构建对象

//好处:即可共享原想对象中的方法,又可以通过构造方法建立对象的不通的属性,一举两得。

function Person(name, age)

{

this.name = name;

this.age = age;

}

Person.prototype.get = function()

{

document.write("name:"+this.name+" , "+"age:"+this.age);

}

//new Person("曹欢",21).get();

//动态原型构造对象

//这种构造出来的对象的属性值可以改变,但是方法却只实例化一次(用flag标志来确定)

function Dog(name, age)

{

//static sex = "男";

this.name = name;

this.age = age;

//alert(typeof Dog.asd == 'undefined');

if(typeof Dog.flag == "undefined")

{

alert("值执行了一次");

Dog.prototype.get = function()

{

document.write("name:"+this.name+" , age"+this.age);

}

Dog.flag = true;

//alert(Dog.flag);

}

}

var d1 = new Dog("小紫",21);

var d2 = new Dog("小花",22);

//d1.get();

//d2.get();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: