奇怪的Javascript,这样的代码你见过吗

function fun() {}
fun.prototype = {
_players: null,
_rules: null,
_done: null,
iURL: 'http://wawa.ddmg.com/ananan/', //随便写的
iURL_on: 'http://wawa.ddmg.com/ananan/',
get players() { //不理解这是什么用法,,,不像function或method啊。。
if(!this._players) {
this._players = {
'biubiu_loader': this.iURL + 'loader.swf',//biubiu_loader是变量名吗,为什么加了引号??
'biubiu_player': this.iURL + 'player.swf'
};
}
return this._players;
},
};

你的代码应该是类似下面两个去除国内常见视频网站的播放前视频广告的代码吧,get players和get rules分别是获取播放器列表和获取规则列表。只不过它不是想平常一样,而是通过命令来用函数返回一个对象,这样就只读。
YoukuAntiADs+
CleanPlayer
就像其他编程语言比如C#定义类的属性有get和set,如果只有get就是只能读不能写或赋值。

加引号是json的key

你确认get和players是分来的吗,这好像应该是方法内部定义方法

js面向对象编程而已。prototype就是函数的原型,设置在prototype上的方法,对所有new出来的实力都会拥有prototype上定义的方法和遍历,和其他面对象域名的继承差不多。

 get players() { //不理解这是什么用法,,,不像function或method啊。。
if(!this._players) {

你这样写是错误的,语法都有问题了,应该下面那样。而且最后的逗号去掉,要不IE下未增加xhtml申明会报错

 getplayers:function() { //不理解这是什么用法,,,不像function或method啊。。
if(!this._players) {
this._players = {
'biubiu_loader': this.iURL + 'loader.swf',//biubiu_loader是变量名吗,为什么加了引号??
'biubiu_player': this.iURL + 'player.swf'
};
}
return this._players;
}///////,

参考js Object对象的存取函数(accessor)

除了直接定义以外,属性还可以用存取函数(accessor)定义。其中,存值函数称为setter,使用set命令;取值函数称为getter,使用get命令

var o = {
    get p() {
        return "getter";
  },
  set p(value) {
    console.log("setter: "+value);
  }
}

上面代码中,o对象内部的get和set命令,分别定义了p属性的取值函数和存值函数。定义了这两个函数之后,对p属性取值时,取值函数会自动调用;对p属性赋值时,存值函数会自动调用。

o.p // getter
o.p = 123 // setter: 123