В AS2 я мог бы сделать следующее:ActionScript3 - увеличения прообразом струны
String.prototype.startsWith = function(s){
return this.indexOf(s) == 1
}
таким образом, startsWith
доступны на каждом объекте Струнный
var s = "some string to test with";
s.startsWith("some") // returns true
и сделал это с большим хранилищем классных инструментов:
var s = "some @VAR string";
s.startsWith("some");//returns true
s.endsWith("ing");//returns true
s.contains("@");//returns true
s.dataBind({VAR: "awsome"})// returns 'some awsome string'
s = "b";
s.isAnyOf("a","b","c"); //true, because "b" is one of the options
s.isInArr(["a","b","c"]); //true, because "b" is in the passed array
var o = { foo: function(i) { return "wind " + i } }
s = "foo";
f.call(o,3) //returns "wind 3" because method foo is ivoked on o with 3
f.apply(o,[3]) //returns "wind 3" because method foo is ivoked on o with 3
var a1 = [], a2 = []
s.push(a1,a2) // pushes s into a1 and a2
И так далее и т. Д. Со многими интересными вещами, которые делают кодирование гораздо более увлекательным (и пытаясь быстро при использовании)
Речь идет не только о String, у меня есть такие utils для Number, Date, Boolean и т. д.
Вот что я пробовал:
[Test]
public function test_stringPrototype()
{
String.prototype.startsWith = function(s):Boolean
{
return return this.indexOf(s) == 1;
}
assertTrue(!!String.prototype.startsWith) //and so far - so good ! this line passes
var s:String = "some str";
assertTrue(!!o.startsWith) //and this won't even compile... :(
}
И это даже не компилируется, не говоря уже пройти или не тест ... ошибка: Access of possibly undefined property startsWith through a reference with static type String.
Что способ сделать это в AS3?
Это сработало, хотя и делает код настолько менее элегантным ... рядом с этими утилитами, вот что я пытаюсь сделать: http://stackoverflow.com/questions/14882430/how-would-object-defineproperty-be- in-as3 –
Но знаешь что? вопрос заключается в трюке ["..."], чтобы просто обмануть среду IDE и отказаться от предупреждений предварительной компиляции ... –
да, вы правы, теперь я читаю сообщение из вашей ссылки, и я думаю об этом: var s: Object = new String ("some str"); s.startsWith(); и обмануть предупреждения предварительной компиляции –