类变量与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属性会赋值给实例属性,
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------LS正解
对于继承来说
function Circle(){}
Circle.PI = 3.14;
function test()
{
}
test.prototype = Circle;
var _test=new test();
alert(_test.PI); 这个是可以的,已测
Circle是他本身的默认实例化对象,这个还真不知道,学习了
------解决方案--------------------
------解决方案--------------------