[英]Javascript: Object or Object.prototype?
我只是学习了Java语言中的原型(不是框架,而是本机功能)。 我完全理解了,至少使用了其中一种。 例:
Array.prototype.myMethod = function(){
/*do something super awesome*/
}
var a = [];
a.myMethod();
在继续阅读时,我看到了一个示例,其中作者通过执行以下操作向Object对象添加了subClass方法:
Object.subClass = function(hash){/*return an extended object that inherits Object's attributes*/}
目标是创建一种类似于面向对象的语言语法的方法。 由于我希望本书的作者使用原型功能定义这种方法,因此我的问题是:
为什么不使用原型?
因为如果使用了原型,则subClass
方法仅在Object
实例上可用。 例如,要调用subClass
,需要以下步骤:
Object.prototype.subClass = function(hash) { /* return an extended object that inherits Object's attributes */ };
function MyClass() { };
var myInstance = new MyClass();
var mySubClassInstance = myInstance.subClass(); // only accessible on instances
因为笔者想这并没有太大的意义subClass
返回对象的扩展实例。 目的不是创建父“类”的实例,然后从该实例返回新的子实例。 没必要
通过在Object
正确定义它,无需先创建MyClass
实例即可创建subClass
实例:
Object.subClass = function(hash) { /* return an extended object that inherits Object's attributes */ };
function MyClass() { };
var mySubClassInstance = MyClass.subClass();
将方法直接添加到对象而不是附加到对象的原型是否更具风险? 在某些情况下,我更喜欢一种方法。
如果希望方法能够访问类实例(使用this
关键字),请使用prototype。 如果不需要this
,则将function声明为类本身的成员,以便您可以在没有对象的情况下调用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.