当前位置: 电脑软硬件应用网 > 设计学院 > 网络编程 > javascript > 正文 |
|
|||
详细讲解js中静态对象和构造函数的区别 | |||
2010-3-3 9:14:21 文/北玉 出处:cnblogs | |||
平常我们会经常使用JSON形式,或者var obj=function(){}亦或function(){}这么几种对象的构建办法,有时会认为这是等价的办法,然而他们还有不同。 来看下下面的对比代码: 在这种形式的声明下,你可以通过objJson.op1或者objJson.fn1()来直接访问内部的属性,这没有问题。但是如果是这样: 那么如果你直接objFn.op1或者objFn.op2()来访问内部的属性的话,就不行了,因为这个时候他还不是个对象。 所以我们需要将他实例化 这样就可以得到你想要的值了。 如果你想复制JSON形式的对象,很简单,但是有一个问题: 你会发现原来的对象中的op1的值也发生了改变。但是如果使用的第二种的对象声明的办法,那么修改只是在实例的内部,不会影响其他的实例。 所以像JSON这样的静态对象适合在写一些常用的库的时候使用,有他自己的命名空间,谁也不会干扰到谁,而且方便使用。 构造函数的"公有""私有"属性我们将上面的构造函数做一个修改: 私有变量在对象外是不允许访问的,所有typeof以后是undefined。下面我们看看私有方法的访问: 注意到这里因为JavaScript的闭包特性,我们通过公有方法acPri()调用私有方法pri2的时候需要使用call将程序的上下文传递进去,不过就是这个看起来绕来绕去的太晕,可以稍稍的包装一下: 当然最后的结果还是不变。 |
|||
关于45IT | About 45IT | 联系方式 | 版权声明 | 网站导航 | |
Copyright © 2003-2011 45IT. All Rights Reserved 浙ICP备09049068号 |