1

Javascript でスーパー クラス コンストラクターに値を渡す方法。

次のコード スニペットでは

(function wrapper() {
var id = 0;

window.TestClass = TestClass;

function TestClass() {
    id++;
    this.name = 'name_' + id;
    function privateFunc() {
        console.log(name);
    }
    function publicFunc() {
        privateFunc();
    }

    this.publicFunc = publicFunc;
}

function TestString() {
    this.getName = function() {
        console.log("***" + this.name + "****************");
    }
}

TestClass.prototype = new TestString(); 
})();

TestString コンストラクターに値を渡すにはどうすればよいですか? 現在、スーパー クラス メソッドは「this」キーワードを使用して値を使用しています。スーパー クラス コンストラクターに値を直接渡す方法はありますか。また、String を拡張する簡単な例を見たいと思います。それは多くのことを分かりやすくするでしょう。

4

1 に答える 1

2

のコンストラクターで次のコードを使用できますTestClass()

TestString.apply(this, arguments);

これにより、新しいオブジェクトをコンテキストとしてコンストラクターが呼び出されます。

ただし、[[Prototype]]チェーンを確立するTestClass.prototype = new TestString();と、すでにコンストラクターが 1 回呼び出されていることに注意してください。

jsFiddle .

拡張の簡単な例を見たいですString

その特性を増強することができprototypeます。

String.prototype.endsWidth = function(str) {
    return this.slice(-str.length) === str;
};
于 2013-08-16T10:41:14.440 に答える