写Javascript代码什突然有个想法,既然可以轻松得重写一个对象得某个方法。那么让一个对象可以自我繁殖,并且后代的对象可以发生某些不同的变化,再根据这个方法的返回结果进行选择,是不是可以促使代码向我们期望的返回值方向进化呢?
于是写了一个小的例子。
http://jsfiddle.net/cdba9/8/
bot有一个方法feed,用他来处理字符串'Hello world!',我们期望feed能返回'world'
起初feed方法什么也不做。
bot.feed = function(s){};
bot本身在生命周期中能进行一定次数的自我繁殖,在繁殖时我们直接取bot.feed.toSting(),然后把这段代码得字符进行随机得修改,然后写进后代的feed
后代的feed看起来是这样的
child.feed = function(s) {
return /* 新的code */
};
如果某个bot的feed方法能返回一个和'world'比较相近的字符串,他将得到相应增加的繁殖机会。以此来使得有效得code能更多的在后代中保留下来。
我运行了一段时间,还没有看到特别牛x的新code生成,不过code为's',也就是
bot.feed = function(s) {
return s;
};
这样的子代已经经常能看到
如果这个过程得以一直继续会不会出现
return s.match(/world/)[0] 或者 return 'world'
这样牛x的后代呢 xD
于是写了一个小的例子。
http://jsfiddle.net/cdba9/8/
bot有一个方法feed,用他来处理字符串'Hello world!',我们期望feed能返回'world'
起初feed方法什么也不做。
bot.feed = function(s){};
bot本身在生命周期中能进行一定次数的自我繁殖,在繁殖时我们直接取bot.feed.toSting(),然后把这段代码得字符进行随机得修改,然后写进后代的feed
后代的feed看起来是这样的
child.feed = function(s) {
return /* 新的code */
};
如果某个bot的feed方法能返回一个和'world'比较相近的字符串,他将得到相应增加的繁殖机会。以此来使得有效得code能更多的在后代中保留下来。
我运行了一段时间,还没有看到特别牛x的新code生成,不过code为's',也就是
bot.feed = function(s) {
return s;
};
这样的子代已经经常能看到
如果这个过程得以一直继续会不会出现
return s.match(/world/)[0] 或者 return 'world'
这样牛x的后代呢 xD
