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");)我试图避免.
谢谢 -
发生这种情况是因为当您调用引用时,其基础对象被设置为this调用方法的值(此处提供更多技术细节).
因此,当您调用方法中"hello world".$ns.alert();的this值时alert,将引用"hello world".$ns,即String.prototype.$ns.
我不认为在prototype内置对象中添加对象级别(命名空间)可能很有用,我通常建议不要修改你不拥有的对象.