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();
//此种方式建立对象不能传递参数,因为该构造函数体内是个空的。
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();
相关文章推荐
- js 创建对象的三种方式——工厂模式、构造函数模式、原型模式
- js---12对象创建方式,构造器,原型
- 详解js产生对象的3种基本方式(工厂模式,构造函数模式,原型模式)
- JS中的几种原型对象与实例对象的判别方式
- #笔记#圣思园 JavaWeb 第57讲——JS继承:对象冒充、call方法、apply方法、原型链方式、混合方式
- JS中定义对象方式四: 使用原型(prototype)方式创建对象之二(弊端及其改进)
- JS中定义对象方式五: 使用动态原型方式创建对象
- W3School-JS-动态原型方式定义类或对象中示例的BUG
- js面向对象之常见创建对象的几种方式(工厂模式、构造函数模式、原型模式)
- js面向对象之常见创建对象的几种方式(工厂模式、构造函数模式、原型模式)
- 【JS】#001 JS定义对象写法(原型、JSON方式)
- JS中定义对象方式四: 使用原型(prototype)方式创建对象之一
- 深入分析JS原型链以及为什么不能在原型链上使用对象
- JS原型对象的创建方法详解
- js中函数对象的属性,函数原型属性length、name、prototype
- js对象声明方式
- js:对象的创建(基于组合和动态原型)
- JS中“创建对象”及“通过原型创建对象”浅析
- js创建对象的6种方式
- JS原型对象和原型链