我编写了以下测试代码,我希望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>
答案 0 :(得分:1)
问题似乎是你的函数Class1
没有返回它自己的实例。
这接近你想要达到的目标吗?
function Class1() {
this.show = function() {
alert('test');
}
return this;
}
Object.prototype.my = Class1;
var obj = new Object();
obj.my().show();
函数Class1返回undefined(因为它没有return语句)。因此,Object.prototype.my等于undefined,它没有名为showTxt()的函数。通过返回,您现在已经返回了具有该功能的对象。
使用浏览器的调试器将有助于逐步完成每一行,看看发生了什么。
答案 1 :(得分:0)
通过一些重新排列,我认为你可以实现你想做的事情。这是一个例子:
function Class1() {
this.name = null;
}
Class1.prototype = {
showTxt: function () { alert(this.name) }
};
var c = new Class1();
c.name = "test1";
c.showTxt();
<强> JSFiddle Example 强>
虽然我不知道你想要完成什么,但我不确定我们还能在这做什么。您是否尝试使用Object
函数扩展每个showTxt()
?