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); 这个是可以的,已测