プロが教えるわが家の防犯対策術!

JavaScriptにて、最初にメソッド用の関数を定義しておいた後、それを複数のオブジェクトのメソッドとして利用するようにしたいのですがうまくいきません。

***************************
<html>
<head>
<title>test</title>
<script type="text/javascript">
function a() {return this.size;}
function b(s) {this.size = s;}

function rectA()
{
this.size = 0;
this.getSize = a;
this.setSize = b;
this.notice = function() {alert(this.getSize());}
}

function rectB()
{
this.size = 0;
this.arg = 90;
this.getSize = a;
this.setSize = b;
this.notice = function() {alert(this.getSize());}
}
</script>
</head>


<body>
<script type="text/javascript">
var a = new rectA;
var b = new rectB;
a.setSize(12);
b.setSize(250);
a.notice();
b.notice();
</script>
</body>
</html>
*************************

要するに↑のコードのようなことをやりたいのですが、FireFox3.6と12.1で実行した限りでは、a.notice()は実行されるものの, b.notice()の段階では「this.getSize is not a function」というエラーが出てしまいます。

上手な解決法がありましたらお願いします。

A 回答 (1件)

ユーザー関数名が上書されていませんか?試しに



var x = new rectA;
var y = new rectB;
x.setSize(12);
y.setSize(250);
x.notice();
y.notice();

としてみてください?
    • good
    • 0
この回答へのお礼

問題はまさにそれでした。
名前の衝突について、考えが至っていませんでした。

回答、ありがとうございました。

お礼日時:2012/07/13 18:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!