问题在代码中
- 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是他本身的默认实例化对象,这个还真不知道,学习了
------解决方案--------------------
------解决方案--------------------