0

我写了下面的测试代码,我想obj.my().showTxt()显示“test1”,但是什么也没有显示,我犯了什么错误?谢谢!

<html>
<body>
Primitive and String Objects
<script type="text/javascript">

    function Class1() {
        this.showTxt = function () { alert(this.name) }
    }

    Object.prototype.my = Class1;

    var obj = new Object();
    obj.name = "test1";

    obj.my().showTxt();

</script>

</body>
</html>
4

2 回答 2

1

似乎问题在于您的函数Class1没有返回自身的实例。

这接近你想要达到的目标吗?

function Class1() {
    this.show = function() {
        alert('test');
    }

    return this;
}

Object.prototype.my = Class1;

var obj = new Object();

obj.my().show();

http://jsfiddle.net/a4ZgF/

函数 Class1 返回 undefined(因为它没有 return 语句)。因此 Object.prototype.my 等于未定义,它没有名为 showTxt() 的函数。通过 return this,您现在已经返回了具有该功能的对象。

使用浏览器的调试器将有助于逐步检查每一行并查看发生了什么。

于 2012-10-11T03:43:29.417 回答
0

通过一些重新安排,我认为你可以实现你想做的事情。这是一个例子:

function Class1() {
    this.name = null;
}

Class1.prototype = {
    showTxt: function () { alert(this.name) }
};

var c = new Class1();
c.name = "test1";

c.showTxt();​

JSFiddle 示例

虽然没有真正知道你想要完成什么,但我不确定我们还能在这里做什么。您是否尝试Object使用功能扩展每一个showTxt()功能?

于 2012-10-11T03:30:52.513 回答