JavaScript原型(ing)问题

One*_*erd 3 javascript oop prototype

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

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

var ns {
 alert: function() {
  alert (this);
 }
}
String.prototype.$ns = ns;
Run Code Online (Sandbox Code Playgroud)

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

"hello world".$ns.alert();
Run Code Online (Sandbox Code Playgroud)

但问题是,并没有引用正在发送的文本(在这种情况下,"你好世界").我得到的是一个警告框,其中包含以下内容:

[对象]

由于没有完全掌握JavaScript的面向对象特性,我感到很茫然,但我猜我错过了一些简单的东西.

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

谢谢 -

CMS*_*CMS 5

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

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

我不认为在prototype内置对象中添加对象级别(命名空间)可能很有用,我通常建议不要修改你不拥有的对象.