例子1:
function Class(){}var a = new Class();Class.prototype.name = 2;alert(a.name );例子2:
function Class(){}var a = new Class();Class.prototype = {name :2};alert(a.name );我的问题是: 为什么2个都属于为对象添加属性的方法 , 例子2却成了重写对象原型了呢? 例子1 为什么又不是重写对象原型呢? 他们的区别在哪里?
解决方案 »
- 更换了proxy,用gird.store.reload(),表格不刷新数据
- jfreechar生成图片保存在服务器硬盘上的问题(在线等)
- 谁能看看我的这个Java计算器
- 菜鸟问题……
- 我页面中的js为什么被IE限制显示?
- IE中点了后退或前进按钮后,地址栏地址变,但是location.href的值不变的问题
- 如何用JS向*.txt格式文件写入和读取数据?
- 请问大侠,如何用js实现动态的对表格实现自动的增加一行的功能
- 框架网页在不同分辨率的显示问题??
- 使用ECharts3.0来实现地图下钻功能(某省的市级下钻到县级)
- 如何排序字母和数字组合的
- Jquery LigerUI1.9 ligerTree 动态加载数据 不显示的问题
既然你说的是被重新定义下 那么看下 下面这例子:
function ClassA(num ){
this.num = num;
}var c1 = new ClassA(2);ClassA.prototype = {
construtor: ClassA,
fn : function(){
alert(this.num);
}
} //重新定义//c1.fn();var c2 = new ClassA(3);c2.fn();//重新定义后 为什么this.num属性还存在?
问题是:如果真如你所说的那样被重新定义了 那么为什么原有的this.num属性还存在 ?
要是给楼主画个图片就容易理解了,建议楼主看看javascript高级程序设计这本书,里面讲解的特别到位
这个object对象的构造 使用的是 你new的时候的function(也即原型是那个function 的 prototype)
你说的this.num 指向的是 object。num
假定查找num,this在查找 object上不存在num 则从关联的原型中查找
function ClassA(num ){
}var c1 = new ClassA(2);
ClassA.prototype.num = 2;
ClassA.prototype = {
fn : function(){
alert(this.num);
}
} //重新定义
var c2 = new ClassA(3);
c2.fn();//这时num将不存在了