伙计们,请你帮我解决这个问题。
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 () {
}
}
}
} );
我的主要问题是,如果我们在创建注册 的实例时不需要传递数量参数,我将如何在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
}
如果我们真的不知道这个类扩展或继承的实例,我们如何使用继承。
答案 0 :(得分:1)
var Registration = function ( options ) {
Module.call(this, { selector : options.selector || **strong text**});
this.declaration = options.declaration
}
我不知道**strong text**
在你的情况下意味着什么。但如果你这样称呼它
var Registration = function ( options ) {
Module.call(this, { selector : options.selector });
this.declaration = options.declaration
}
或
var Registration = function ( options ) {
Module.call(this, options );
this.declaration = options.declaration
}
在您的情况下,m_registration.selector
将为'body'
答案 1 :(得分:1)
var Module = function ( options ) {
this.declaration = options.declaration;
this.selector = options.selector;
}
Module.prototype = {
selector: 'body',
declaration: function () {
return{
init: function () {
console.log( 'nodule initialize' );
},
destroy: function () {
console.log( ' module destroyed' );
}
}
}
};
另一种方法是将您想要继承的所有属性放到prototype
属性中。这就是javascript引擎处理继承的方式