解决方案 »
- 简单的javascript贪吃蛇
- window.external.loadString和window.external.saveString是什么意思啊?
- js如何区分页面是关闭还是刷新
- 作业急救
- 请指教~~~
- 求救!如何用 javascript将一个listview中选中的数据放到另一个listview中,急
- 有applet的页面如何在进入页面时设置焦点?
- 请问如何在页面中动态添加一个DIV
- 我发现每条javascript语句之间的分号有时是必需的,有时又可以省略,具体规则是什么?
- 如何实现在页面不刷新的情况下页面跳到底部(一屏显示不完) 在线等,急啊!!!
- 弄了一天了,不知道为什么实现不了这个图片3D转换效果,求助
- match问题
var fun = function(){}fun.prototype = {
name : 'peter',
age : 25
}var a = new fun();
var b = new fun();a.name = 'jack';
b.name = 'tom';
name : 'peter',
age : 25
}var a = new fun();
var b = new fun();a.name = 'jack';
b.name = 'tom';这样的结果是完全不同的。
info : {
name : 'peter',
age : 25
}
}var a = new fun();
var b = new fun();//此时a与b一样是复制了fun的属性和方法(不共享,但是空的,因为fun()是空的)可以打印证明:
console.log(a.toSource());//({})
console.log(b.toSource());//({})=======================分割线======================
a.info.name = 'jack';
b.info.name = 'tom';//而fun.prototype继承而来的方法和属性同样继承给a,b。他们是共享的,所以修改.info.name大家一起修改。
//但a,b因由fun创建出来,已经没有prototype属性,但他们有__proto__属性一样可以指向到fun.prototypeconsole.log(a.prototype);//undefined
console.log(a.__proto__ === fun.prototype);//trueconsole.log(a.__proto__.info.name === b.info.name);//true
console.log(a.info.name === fun.prototype.info.name);//true=======================分割线======================
a.name = 'jack';
b.name = 'tom';
//这又不一样了,是各自建了一个属性,和复制fun的属性一样,不共享。等价于:
var fun = function(name){
this.name = name;
};fun.prototype = {
info : {}
};var a = new fun('jack');
var b = new fun('tom');console.log(a.toSource());//({name:"jack"})
console.log(b.toSource());//({name:"tom"})