有人可以指導我如何爲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上更容易實現頂部 –