读书人

关于javascript定义种与对象

发布时间: 2012-06-28 15:20:04 作者: rapoo

关于javascript定义类与对象

在说这个话题之前,我想先说几句题外话:最近偶然碰到有朋友问我“hoisting”的问题。即在js里所有变量的声明都是置顶的,而赋值则是在之后发生的。可以看看这个例子:

?

var Obj = function (name) {    this.name = name;    this.flag = new Array('A', 'B');    if (typeof Obj._init == 'undefined') {        Obj.prototype = {            showName : function () {                alert(this.name);            }        };        Obj._init = true;    }};
?

?

如上,用_init作为一个标志来判断是否已经给原型创建了方法。如果是那么就不再执行。这样其实在本质上是没有任何变化的,方法仍是通过原型创建,唯一的区别在于这个构造函数看起来“江山统一”了。

但是这种动态原型的方式是有问题的,《JavaScript高级程序设计》里并没有深究。创建第一个对象的时候会因为prototype在对象实例化之前没来的及建起来,是根本无法访问的。所以第一个对象是无法访问原型方法的。同时这种方式在子类继承中也会有问题。
关于解决方案,我会在下一文中说明。?


其实就使用方便来说的话,个人觉得是没必要做这个判断的。。。呵呵 ^_^


?

转帖来自:http://www.cnblogs.com/hongru/archive/2010/11/08/1871359.html

?


?

读书人网 >JavaScript

热点推荐