对象不同使用的区别

来源:互联网 发布:找最大值 java 方法 编辑:程序博客网 时间:2024/05/22 13:12

 <html>
<head>
<title>Example</title>
</head>
<body>
<script type="text/javascript">
function Car(sColor, iDoors, iMpg) {
    this.color = sColor;
    this.doors = iDoors;
    this.mpg = iMpg;
    this.drivers = new Array("Mike", "Sue");
}

Car.prototype.showColor = function () {
    alert(this.color);
};

var oCar1 = new Car("red", 4, 23);
var oCar2 = new Car("blue", 3, 25);

oCar1.drivers.push("Matt");

alert(oCar1.drivers);    //outputs "Mike,Sue,Matt"
alert(oCar2.drivers);    //outputs "Mike,Sue"

</script>
 
</body>
</html>

 

-----------------------------------------------

 

<html>
<head>
<title>Example</title>
</head>
<body>
<script type="text/javascript">
function Car(){
 }
 
 Car.prototype.color="red";
 Car.prototype.doors=4;
 Car.prototype.drivers = new Array("Mike","Sue");
 Car.prototype.showColor = function (){
 alert(this.color)
 }
 
 var oCar1 = new Car();
 var oCar2 = new Car();
 
 oCar1.drivers.push("Matt");
 
 alert(oCar1.drivers)//outputs "Mike,Sue,Matt"
 alert(oCar2.drivers)//outputs "Mike,Sue,Matt"

</script>
 
</body>
</html>

------------------------------------------


说明:

 

  javascript中使用“原型方式” 定义类/对象。 
在javascript 中可以采用原型方式定义类。
这种方式利用对象的prototype属性,可把它看成创建新对象所依赖的原型。但是用这种方式时,不能通过构造函数传递参数初始化属性的值,这意味了必须在函数创建后才能改变属性的默认值。
例子:

 function Car(){
 }
 
 Car.prototype.color="red";
 Car.prototype.doors=4;
 Car.prototype.drivers = new Array("Mike","Sue");
 Car.prototype.showColor = function (){
 alert(this.color)
 }
 
 var oCar1 = new Car();
 var oCar2 = new Car();
 
 oCar1.drivers.push("Matt");
 
 alert(oCar1.drivers)//outputs "Mike,Sue,Matt"
 alert(oCar2.drivers)//outputs "Mike,Sue,Matt"
这里,属性drivers是指向Array的指针,该数组包含两个名字“Mike”“Sue”,由于drivers是引用值,Car是两个实例的同一数组,这意味着给oCar1.drivers添加值“Matt”,在oCar2.drivers中也能看到。