Javascript:有没有可能有一个函数在Object/String..创建

Javascript: Is it possible to have a function that is automatically fired when an Object/String... created?

本文关键字:Object String 创建 函数 有一个 有可能 Javascript      更新时间:2023-09-26

这个问题很直接。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构造函数没有重载。

您可以这样创建自己的对象。该函数充当构造函数:

$(document).ready(function(){
    var instance = new object('test123');
    alert('Instance: '+instance.len);
    function object(var1){
        this.var1 = var1;
        this.len = this.var1.length;
    }
});

您可以覆盖string.prototype.constructor来改变字符串构造函数的默认功能,覆盖object.prototype.constructor来改变对象构造函数的默认功能。

然而,重写JavaScript核心类的默认功能被广泛认为是不好的做法,可能有更好的方法来实现您的最终目标。> 摆弄jsFiddle之后,然后做了一些研究。我发现其实我错了。字符串原语是不可变的,所以不能像我建议的那样重写构造函数。查看String原型修改自身,了解更多信息。