首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

类变量与prototype对象的变量有什么区别?解决办法

2012-11-03 
类变量与prototype对象的变量有什么区别?问题在代码中JScript codefunction Circle(){}Circle.PI 3.14/

类变量与prototype对象的变量有什么区别?
问题在代码中

JScript code
function Circle(){}Circle.PI = 3.14;//(1)Circle.prototype.PI = 3.14;//(2)//我知道的区别//(1)的PI不能给Circle的对象直接调用//var c = new Circle(); c.PI undefined//(2)的PI能给Circle的对象直接调用//var c = new Circle(); c.PI == 3.14//还有其他区别吗?


[解决办法]
这里所有的function函数都是Function类的实例化

而 new function 又是function的实例化

所以你上面function Circle(){}
Circle.PI = 3.14;//(1) 对Circle对象,也就是Function类的实例化对象的一个属性而已
Circle.prototype.PI = 3.14;//(2)function 的原型增加一个属性 ,作用域原型生成的实例化对象都包含这个属性
[解决办法]
Circle 是一个函数,javascript允许使用new 关键字来实例它,
每个函数都有一个属性prototype, prototype也是一个对象,当实例化一个函数var c = new Circle()时,会将 Circle函数的引用赋值给实例的constructor属性, 也就是所c.constructor 就是Cirlcle函数, 同时Cirlcle的protorype属性会赋值给实例属性,
[解决办法]
探讨
@@,你说的那个先找实例,再找原型的我也明白,我现在问的是‘类变量’与prototype的区别,不是问实例变量与prototype的区别

[解决办法]
探讨
function Circle(){}
Circle.PI = 3.14;//(1)
Circle.prototype.PI = 3.14;//(2)
function Circle(){}
Circle.PI = 3.14;//(1)
Circle.prototype.PI = 3.14;//(2)
//我知道的区别
//(1)的PI不能给Circle的对象直接调用
//var c = new Circle(); c.PI undefined
//(2)的PI能给Circle的对象直接调用
//var c = new Circle(); c.PI == 3.14
//还有其他区别吗?

[解决办法]
LS正解
对于继承来说
function Circle(){}
Circle.PI = 3.14;

function test()
{
}
test.prototype = Circle;
var _test=new test();
alert(_test.PI); 这个是可以的,已测


Circle是他本身的默认实例化对象,这个还真不知道,学习了


[解决办法]
探讨
原理就是:Circle不仅是一个类,也是这个类的一个默认实例化对象.Circle和其它再new出来的实例是兄弟关系(或者说是月饼和月饼的关系),并非父子关系(或者说并非是月饼模子和月饼的关系)

[解决办法]
探讨

引用:
原理就是:Circle不仅是一个类,也是这个类的一个默认实例化对象.Circle和其它再new出来的实例是兄弟关系(或者说是月饼和月饼的关系),并非父子关系(或者说并非是月饼模子和月饼的关系)


Circle和其它再new出来的实例是兄弟关系
-----------

这个值得商榷。因为Circle和new出来的实例的模子不同,Circle的模子是Fu……

热点排行