假设我在Javascript中定义了一个构造函数和一个原型,如下所示:
MyGame.Player = function(){
this.somevar = 42;
};
MyGame.Player.prototype = {
somevar: null,
someFunc: function(){}
};
如果我执行以下操作会发生什么:
MyGame.Player.Helper = function(){...}
MyGame.Player.Helper.prototype = {...}
答案 0 :(得分:2)
javascript会实际允许吗?
不确定。它只是一个函数作为对象的属性。在经典的OOP中,这将被称为类方法。
Helper会在MyGame.Player()的实例中显示为ownProperty吗?
不。它是构造函数的属性,而不是实例的属性。该实例仅获取构造函数中分配给this
的所有属性以及prototype
中的任何属性。它不继承构造函数的属性。
即使我没有Player对象,我也可以随时创建新的Helper对象吗?
当然,因为您拨打了new MyGame.Player.Helper
,而不是new (new MyGame.Player).Helper
。
换句话说,您刚刚为MyGame.Player.Helper
分配了一个功能,当然您可以通过MyGame.Player.Helper()
来调用它,因为这就是您放置它的位置。