不明白 这你就要看prototype这个JS的代码了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 自己顶一下 顺便把问题说清楚下JavaScript 5.CHM帮助中在编写对象定义时,可以使用 prototype 属性来创建由该定义生成且所有对象都具有的属性。原型属性将按引用复制给类中的每个对象,因此这一类中的所有对象的这个属性都相同。不过,可以在一个对象中更改原型属性的值,新的值将覆盖默认值,但仅在该实例中有效。属于这个类的其他对象不受此更改的影响。按这句话,我的理解是该变了其中一个实例的属性直,不会影响其他的实例<script>function car(){}car.prototype.color = new Array("red","yellow","blue")car.prototype.owner = "pig"car1= new car()car2= new car()car1.color.push("zise")car1.owner="liu"alert(car1.color)alert(car2.color) //这里居然和 car1.color是一样的 我并没有修改car2.color的属性了。alert(car1.owner)alert(car2.owner) //这里car2.owner不受影响</script>请个位大虾请教下 - -! 只能说Array比较特殊 它的方法都改变了它本身 指针?<script> function car(){} car.prototype.color = new Array("red","yellow","blue") car.prototype.owner = new String("pig") car1= new car() car2= new car() car1.color = new Array("1","2")//car1.color.push("zise") car1.owner="liu" alert(car1.color) alert(car2.color) //我使用的是new Array();所以alert(car1.owner) alert(car2.owner) //这里car2.owner不受影响 </script> Array是一个引用类型,内存中保存的是对array对象的引用(也就是他指向实际对象的指针)其他的属性如.owner,这是个字符串,是个值类型,内存中保存的是他本身。所以car1.color和car2.color都是指向同一个Array的car1.color.push("zise") 是对那个数组的改变 但是指针没有改变你直接 car1.color="Haha" 这时 在看看结果 (这里把color搞成值类型)嘿嘿 有时候基础还是很重要的!! car1.color.push("zise")操作目标是对象本身 你用的push当然会变,用push后实际上 car.prototype.color 也变化了用=直接赋值就没有这个问题 String.prototype.Up = function(){ this.toString = function(){ return this.toUpperCase(); }}function car(){}car.prototype.owner = new String("pig")car1= new car()car2= new car()car1.owner.Up()alert(car1.owner)alert(car2.owner) 【关于JQuery设计思想之 方法函数化是什么意思啊?在线等···】 JQ给<a></a>添加属性的问题 关于乘除小数位数toFixed的用法 如何搞到论坛积分? 怎么用js调用客户端realplayer软件? 取字符串的最右边一个字符用什么函数? JavaScript如何判断两个日期的大小? 如何用图片作一个提交按钮和检查用户按钮 如何消除链接文本的下划线 紧急求助!60分! 用javascript能够生成gif格式的图片吗? 这两个语句有什么区别???????
在编写对象定义时,可以使用 prototype 属性来创建由该定义生成且所有对象都具有的属性。原型属性将按引用复制给类中的每个对象,因此这一类中的所有对象的这个属性都相同。不过,可以在一个对象中更改原型属性的值,新的值将覆盖默认值,但仅在该实例中有效。属于这个类的其他对象不受此更改的影响。
按这句话,我的理解是该变了其中一个实例的属性直,不会影响其他的实例
<script>
function car(){}
car.prototype.color = new Array("red","yellow","blue")
car.prototype.owner = "pig"
car1= new car()
car2= new car()
car1.color.push("zise")
car1.owner="liu"
alert(car1.color)
alert(car2.color) //这里居然和 car1.color是一样的 我并没有修改car2.color的属性了。
alert(car1.owner)
alert(car2.owner) //这里car2.owner不受影响
</script>
请个位大虾请教下 - -!
function car(){}
car.prototype.color = new Array("red","yellow","blue")
car.prototype.owner = new String("pig")
car1= new car()
car2= new car()
car1.color = new Array("1","2")//car1.color.push("zise")
car1.owner="liu"
alert(car1.color)
alert(car2.color) //我使用的是new Array();所以
alert(car1.owner)
alert(car2.owner) //这里car2.owner不受影响
</script>
其他的属性如.owner,这是个字符串,是个值类型,内存中保存的是他本身。
所以car1.color和car2.color都是指向同一个Array的
car1.color.push("zise") 是对那个数组的改变 但是指针没有改变
你直接 car1.color="Haha" 这时 在看看结果 (这里把color搞成值类型)
嘿嘿 有时候基础还是很重要的!!
操作目标是对象本身
用=直接赋值就没有这个问题
this.toString = function(){ return this.toUpperCase(); }
}function car(){}car.prototype.owner = new String("pig")car1= new car()
car2= new car()car1.owner.Up()alert(car1.owner)
alert(car2.owner)