2

JavaScript の「厳格モード」で問題が発生しています。ライブラリコンストラクターをコーディングしていましたが、ライブラリの先頭で厳密モードを有効にすると、"use strict";このエラーが発生します - Uncaught TypeError: Cannot set property 'e' of undefined. 以下は私のコンストラクタコードです:-

(function(window, document, undefined){
"use strict";

function Ram(CSSselector) { //The main Constructor of the Library
    if (this === window) { return new Ram(CSSselector); }

    if ((CSSselector !== undefined) && (typeof CSSselector === "string")) {
        this.e = catchEl(CSSselector);
    } else {
        this.e = CSSselector;
    }
    this.cssSel = CSSselector;
}

}(this, this.document));

@Dave のおかげで、次の方法で問題を解決できました:-

function Ram(CSSselector) { //The main Constructor of the Library
    if (this === window) { return new Ram(CSSselector); }

    //This code helps to call the constructor without the new keyword!
    //Thanks to Dave for help!
    if (this instanceof Ram) {
        this.e = ((CSSselector !== undef) && (typeof CSSselector === "string")) ? catchEl(CSSselector) : CSSselector;
        this.cssSel = CSSselector;
    } else {
        return new Ram(CSSselector);
    }
}
4

0 に答える 0