尝试在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”);)我试图避免。
谢谢 -
答案 0 :(得分:5)
发生这种情况是因为当您调用引用时,其基础对象被设置为调用方法的this
值(更多技术细节here)。
因此,当您在"hello world".$ns.alert();
方法中调用this
alert
值时,会引用"hello world".$ns
,String.prototype.$ns
。
我不认为在内置对象的prototype
内添加对象级别(命名空间)会很有用,我通常建议not modify objects you don't own。