有人可以指导我如何为String
设置自己的长度,如"string".length
或String("string").length
。如何覆盖字符串的长度属性
据我所知,String
为Object
的后裔,并且长度分配可能发生在prototype.constructor
,以及在prototype.__defineSetter__;
编辑: 的动机是要学会在当前的浏览器多远的javascript可以推到其中以实现自己的语言。运算符重载是我的第二大担忧,它似乎被故意阻塞(即没有参数传递给运算符函数)。
一些动机来自:
http://code.google.com/p/traceur-compiler/
UPDATE: 除了新的对象可以与被锁定: Object.preventExtensions(String.prototype);
Object.seal(OBJ)...不允许配置性
Object.freeze(OBJ)......还不允许写
在这里看到:http://msdn.microsoft.com/en-us/library/ff806191(v=vs.94).aspx#Y240
我想可能有一些办法
Object.defineProperty(String, "length", {
value: 101,
writable: true,
enumerable: true,
configurable: true
});
0:不撤销该锁定状态....
重新定义可以这样做
但是会在Chrome V8中抛出“redefine_disallowed”。
抛出错误的JS引擎的代码可以在这里找到DefineOwnProperty下:
http://code.google.com/p/v8/source/browse/branches/bleeding_edge/src/v8natives.js?r=8073
你是否尝试改变字符串的长度? :P。用更严肃的语调,你为什么要这么做?! –
是的,我不认为这是你真正想做的事 –
是的,我修改了原型,__defineSetter__和defineProperties。 我想知道我可以在当前的浏览器中推送原生“对象”多远。这使得编程语言在javascript上更容易实现顶部 –