【发布时间】:2013-06-15 10:56:19
【问题描述】:
各位,能不能帮我解答一下这个问题。
var Module = function ( options ) {
var settings = {
selector: 'body',
declaration: function () {
return{
init: function () {
console.log( 'nodule initialize' );
},
destroy: function () {
console.log( ' module destroyed' );
}
}
}
};
this.declaration = options.declaration || settings.declaration;
this.selector = options.selector || settings.selector;
};
var Registration = function ( options ) {
this.selector = options.selector || **strong text**;
this.declaration = options.declaration
}
app.utils.extend( Module, Registration );
var m_registration = new Registration( {
declaration: function ( f ) {
return {
init: function () {
},
destroy: function () {
}
}
}
} );
我的主要问题是,如果我们在创建 Registration 实例时不需要传递数量参数,我如何继承 m_registration 中的 Module.selector 属性 p>
我的函数app.utils.extend()的实现:
var app.utils.extend = function ( from, to ) {
var F = function () {
};
F.prototype = from.prototype;
to.prototype = new F();
to.prototype.constructor = to;
to.superclass = from.prototype;
}
更新:
如果我们使用这些方法:
var Registration = function ( options ) {
Module.call(this, { selector : options.selector });
this.declaration = options.declaration
}
如果我们真的不知道这个类从哪个实例扩展或继承,我们如何使用继承。
【问题讨论】:
-
也许这些变种很好
var Registration = function ( options ) { this.selector = options.selector || this.superclass.selector; this.declaration = options.declaration } -
您不能定义名称中带有点的变量!你必须做
var app = {}; app.utils = {}; app.utils.extend = function() {...}; -
@LightStyle:或
var app = { utils: { extend: function() { ... } } }; -
@LightStyle:我之前意识到了,但我没有在问题中显示这部分代码
-
@T.J.Crowder 是的,也许他想添加更多属性并在嵌套对象中定义它们可能会很痛苦:P @DmitriyFilipenko 如果对象是在之前定义的,无论如何你必须不放
var声明前的关键字!
标签: javascript class oop prototype