JavaScript 原型(prototype)问题

标签 javascript oop prototype

尝试掌握 Javascript 中的原型(prototype)设计。尝试创建我自己的命名空间以扩展 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"); ),而我正试图避免这种情况。

谢谢-

最佳答案

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

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

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

关于JavaScript 原型(prototype)问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2798076/

相关文章:

javascript - jQuery:迭代中的索引切片函数

oop - 编写健壮的 "modern"Fortran 代码

java - android 将 Activity.this 传递给方法

javascript - 对象(字符串或数组)名称。如何得到它?

javascript - 使 JavaScript 私有(private)方法可供其公共(public)方法访问

javascript - 获取 Function.prototype.bind.apply(...) 不是构造函数错误

javascript - React : Uncaught TypeError: this. state.data.map 不是一个函数并且

javascript - 如何克服javascript的56位限制

javascript - 在单行 iframe 代码中用于动态 iframe 高度的内联 JavaScript

PHP 将 $_POST 数据映射到对象