写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
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/28585
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.