JavaScript原型(ing)问题

时间:2010-05-09 15:16:56

标签: javascript oop prototype

尝试在Javascript中掌握原型。尝试创建自己的命名空间以在JavaScript中扩展String对象。

这是我到目前为止(一个片段):

var ns {
 alert: function() {
  alert (this);
 }
}
String.prototype.$ns = ns;

如您所见,我正在尝试将一系列函数放入ns命名空间。所以我可以执行这样的命令:

"hello world".$ns.alert();

但问题是, this 不会引用正在发送的文本(在本例中为“hello world”)。我得到的是一个警告框,其中包含以下内容:

[对象]

没有完全掌握JavaScript的面向对象性质,我很茫然,但我猜我错过了一些简单的东西。

有谁知道如何实现这个(从嵌套对象中获取源文本)?除此之外,我不得不做程序编程(ns.alert(“hello world”);)我试图避免。

谢谢 -

1 个答案:

答案 0 :(得分:5)

发生这种情况是因为当您调用引用时,其基础对象被设置为调用方法的this值(更多技术细节here)。

因此,当您在"hello world".$ns.alert();方法中调用this alert值时,会引用"hello world".$nsString.prototype.$ns

我不认为在内置对象的prototype内添加对象级别(命名空间)会很有用,我通常建议not modify objects you don't own