Javascript:有没有可能有一个函数在Object/String..创建
Javascript: Is it possible to have a function that is automatically fired when an Object/String... created?
这个问题很直接。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原型修改自身,了解更多信息。
相关文章:
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 函数未在Object.keys或Object.getOwnPropertyNames下列出,但可以调用
- delete在Object上效率低下,但在DOM Element's的数据属性,与null out相比
- 有没有一种方法可以列出Ember.Object的所有绑定
- 如何取消object.prototypes javascript的一个函数
- 为什么使用 Object('123') 创建对象会创建一个 String() 对象,但 typeof 是“对象”
- 如何将Scala Map[String,Map[String,String]]传递给Js Object
- 向Object/Number/String原型添加方法
- Javascript将String转换为Object属性
- 方法的起源,如 Object.defineProperty , String.fromCharCode()
- 快速-试图模仿控制器.Get Router.use()需要回调函数,但出现了[object String]错误
- Promise to string - [object Object] or [object Promise]?
- 为什么typeof Object、String、Number-Javascript中的一个函数
- Javascript:有没有可能有一个函数在Object/String..创建
- 升级到typescript 2后,找不到(string), Object, Date, Json的require索引
- Javascript:将object传递给由string创建的Javascript
- 检查对象名称为string的地方是否定义了object
- ng-options在select中返回一个Object而不是String
- Javascript console.log(object) vs. concatenating string
- 节点服务器接收文件上传为String: '[object ArrayBuffer]'