1. 基本クラスの使用
方法 1:
function sth(a) // コンストラクター
{
this.a = a;
this.fun = 出力;
関数出力(a, b, c)
{
document.write(this.a)
}
//呼び出し
var s = new sth(250);
s.fun(1, 2, 3); // 出力がある場合sth 以前は間違っていました
方法 2:
{
this.a = a;
this.output = function()
{
document.write(this.a);
}
var s = new sth(2);
s.output(); // 出力 2
2. 継承
方法 1:
this.x = x ;
}
function B(x, y)
{ // メソッド 1
/*
this.construct = A;
this.construct(x); .construct;
*/
// メソッド 2
//A.call(this, x);
// メソッド 3
A.apply(this , new Array(x)); // A.apply(this, argument) もできますが、引数の順序は正しい必要があります
this.y = y
this.print = function; ()
{
document.write("x = ", x,
", y = ", y);
var b = new B(1, 2);
b.print();
alert(B instanceof A); // 出力 false
利点: 多重継承を実現できます (複数の呼び出しを行うだけです)
欠点:
・コンストラクターとして使用する必要があります
・instanceof 演算子を使用してこのタイプの継承を操作すると false になります
方法 2:
コードをコピー
コードは次のとおりです:
function A() {
} A.prototype.x = 1; 関数 B()
{
}
B.prototype = new A() // パラメータは取得できません。
B.prototype.y = 2;
B.prototype.print = function()
{
document.write(this.x, ", ", this.y, "
;");
}
var b = new B();
b.print();
document.write(binstanceof A); // 出力 true
欠点:
・多重継承を実装できない
・コンストラクターはパラメーターを受け取りません
ヒント
通常は混合モードを両方同時に使用します
コードをコピーします
コードは次のとおりです:
{
document.write(this.x, "
")
}
function B(x, y)
{
A.call(this, x);
this.y = y;
B.prototype = new A();
B.prototype.printxy = function()
{
document.write(this.x, ", ", this.y, "
");
var b = new B(1, 2);
b.printx(); // 出力 1
b.printxy(); // 出力 1, 2
document.write(b) instanceof A); // true を出力します
3. 同様の静的メンバー関数の使用
コードをコピーします
コードは次のとおりです。 🎜>function sth(a)
{ this.a = a;
4. オブジェクトの解放
コードをコピー
コードは次のとおりです。 🎜>var obj = new Object; // obj は参照です
obj = null; // このオブジェクトを解放する必要がある場合は、そのすべての参照を null
5. 関数オブジェクト
var v = new Function("arg1", "arg2", "document.write(arg1 arg2);"); // 関数オブジェクトを定義します。パラメータは arg1, arg2
v(1, 2); // 3 を出力します
6. コールバック関数
関数コールバック (func, arg)
{
func(arg)
function fun(arg)
{
document.write(arg); 🎜>}
//callback(func, "sb"); // このアプローチは機能しません
var func = new Function("arg", "fun(arg);" );
// もちろん、func(arg) を特定の実行コードに置き換えることもできます
// ただし、関数コードが巨大な場合はこれを行うのが最善です
callback(func, "sb ");
7. 関数のオーバーロード
コードをコピーします
{
ケース 1:
document.write(arguments[0])
;ケース 2 :
document.write(arguments[0] argument[1]);
デフォルト:
document.write("ERROR!"); > }
}
楽しい(1)
楽しい(1, 2);
8. 関数クロージャーを使用して「静的変数」を使用して関数を実装します
コードをコピー
return
}
return fun2;
var func() ;
func(); // 出力 2
func(); // 出力 4