Javascript:是否可以有一个在创建对象/字符串时自动触发的函数?

标签 javascript oop object orientation magic-methods

这个问题很简单。就像在 PHP 中我们有神奇的函数 __construct() 一样,我可以在 javascript 中使用任何相关的函数或 hack 吗?

示例:

function setLength() {
    /* Some work */
}

var a = new Object();
b = new String("Hello");
//Is there anyway the function setLength() will automatically be fired when an Object or String... created?

我期待着您的答复。非常感谢您的帮助。

[x]

最佳答案

尝试重载String将是一个坏主意,特别是在使用第三方库时。增强 Object 也是如此。

但是,您可以这样做,但我不推荐这样做..

var _String = String;

window.String = function() {
        setLength();
        return new _String(arguments[0]);
}

创建原始字符串时显然也不会调用它。

jsFiddle .

<小时/>

您可以使用一个字符串工厂函数来返回一个新的String对象并调用您的函数。

var stringFactory = function(chars) {
    setLength();
    return new String(chars);  
}

这有一些优点,主要是String构造函数没有重载。

关于Javascript:是否可以有一个在创建对象/字符串时自动触发的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8471468/

相关文章:

javascript - Protractor 如何测试列表中的最后一个项目类

javascript - GAE Launcher 中的数据库 ID 号很大?

c++ - 析构函数在 C++ 中是如何工作的

javascript - 使用 crypto 模块进行 Node.js MD5 解密

javascript - 单击按钮时如何更改图像?

java - 面向对象设计 : inheritance vs type (enum) variable

oop - 点符号如何改变对象的内部表示?

javascript - 奇怪的javascript对象问题

Javascript:如何在 Jrunscript 中打印对象?

object - Redis 发送一个带有消息的对象以用于方法调用