簡體   English   中英

繼承JavaScript“對象”中的屬性

[英]Inherit properites in javascript “object”

伙計們,您能幫我解決這個問題嗎?

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屬性。

我對功能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 ) {
   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'

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引擎處理繼承的方式

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM