给Function做的OOP扩展_javascript技巧
// 下面是OOP用的方法
// 这样很猥琐……因为JS并不是OOP语言……
// 但伟大的伍迷指引我们来这么干
// Belldandy会保佑用这些方法来OOP的人的……
Function.prototype.inherits = function(base){
//派生关系,保留了prototype
//只支持单派生
this.prototype = new base();
return this;
}
Function.prototype.create = function(){
//类的创建器,和用new等价
//JS不支持在构造器用call和apply,所以……
//Belldandy啊,感谢你告诉我怎么解决这个问题啊……
var _args = [];
for(i=0;i
return eval('new this('+_args.join(',')+')'); //eval都用上了……Bell啊,下次给个好点的主意吧……
}
Function.prototype.pin = function(pinner,args){
// 注册服务,或者叫“pin”服务
// EventManager就可以这么干
// 你也可以认为实现了有默认实现的接口……
// 例如,pin EventManager就可以这样:Class.pin(core.WvwntManager)
args = args || [];
pinner.apply(this.prototype,args);
return this;
}
Function.prototype.method = function(name, f) { //添加方法,高效
if (!(f instanceof Function)) throw new Error('方法绑定无效,得到类型'+typeof f+';期待为function');
this.prototype[name] = f;
return this
}
Function.prototype.property = function(name, localName, getter, setter) { //添加属性,可自定getter、setter
if (!name || !name instanceof String) throw new EnvironmentException('定义属性时,属性名没有定义,或者不是字符串');
if (!localName || !localName instanceof String) localName = '_local_' + name;
if(getter instanceof Function) {
this.prototype['_belldandy_get_'+name] = getter;
}
if(setter instanceof Function){
this.prototype['_belldandy_set_'+name] = setter;
}
this.prototype[name] = new Function("value , force"," \
if (!value && !force) { \
if (!this['"+'_belldandy_get_'+name+"'] || !this['"+'_belldandy_get_'+name+"'] instanceof Function) \
return this['"+localName+"']; /* 没有设置getter时 */\
else \
return this['"+'_belldandy_get_'+name+"'].call(this); \
} else { \
if (!this['"+'_belldandy_set_'+name+"'] || !this['"+'_belldandy_set_'+name+"'] instanceof Function) \
this['"+localName+"'] = value; \
else\
this['"+'_belldandy_set_'+name+"'].call(this, value); \
return this\
}") //Belldandy啊,饶恕我吧,虽然这样不产生闭包
return this;
}
Function.prototype.static = function(name,value){ //静态特征,包括属性和方法
this[name] = value;
return this;
}
使用效果如下:
function foo() { };
foo
.property('a', '_a')
.property('b', '_b', function() { return this._b + '.' })
.method('f', function() { dwn(this.a()) });
function bar(x,y){this.x = x;this.y = y;};
with(bar){
inherits(foo)
method('g',function(){dwn(this.a()+'-'+this.b())})
}
var f = new foo();
f.a(1);
f.b(2);
dwn(f.a());
dwn(f.b());
f.f();
b = bar.create(1,2);
b.a(4);
b.b(5);
dwn(b.x+','+b.y);
b.g();
//dwn自己参阅月影的书

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Fungsi bermaksud fungsi. Ia adalah blok kod yang boleh digunakan semula dengan fungsi tertentu Ia boleh menerima parameter input, melakukan operasi tertentu, dan mengembalikan hasil daripada blok yang boleh digunakan semula. kod untuk meningkatkan kebolehgunaan semula dan kebolehselenggaraan kod.

Penjelasan terperinci tentang peranan dan fungsi jadual MySQL.proc ialah sistem pengurusan pangkalan data relasi yang popular Apabila pembangun menggunakan MySQL, mereka sering melibatkan penciptaan dan pengurusan prosedur tersimpan (StoredProcedure). Jadual MySQL.proc ialah jadual sistem yang sangat penting Ia menyimpan maklumat yang berkaitan dengan semua prosedur tersimpan dalam pangkalan data, termasuk nama, definisi, parameter, dsb. prosedur tersimpan. Dalam artikel ini, kami akan menerangkan secara terperinci peranan dan kefungsian jadual MySQL.proc

Dalam artikel ini, kita akan belajar tentang fungsi enumerate() dan tujuan fungsi "enumerate()" dalam Python. Apakah fungsi enumerate()? Fungsi enumerate() Python menerima pengumpulan data sebagai parameter dan mengembalikan objek penghitungan. Objek penghitungan dikembalikan sebagai pasangan nilai kunci. Kuncinya ialah indeks yang sepadan dengan setiap item, dan nilainya ialah item. Syntax enumerate(iterable,start) Parameters iterable - Yang diluluskan dalam pengumpulan data boleh dikembalikan sebagai objek enumeration, dipanggil iterablestart - Seperti namanya, indeks permulaan objek enumeration ditakrifkan oleh permulaan. kalau kita abaikan

Apakah pengaturcaraan berorientasikan objek? Pengaturcaraan berorientasikan objek (OOP) ialah paradigma pengaturcaraan yang mengabstrak entiti dunia sebenar ke dalam kelas dan menggunakan objek untuk mewakili entiti ini. Kelas mentakrifkan sifat dan tingkah laku objek, dan objek memberi contoh kelas. Kelebihan utama OOP ialah ia menjadikan kod lebih mudah difahami, diselenggara dan digunakan semula. Konsep Asas OOP Konsep utama OOP termasuk kelas, objek, sifat dan kaedah. Kelas ialah pelan tindakan sesuatu objek, yang mentakrifkan sifat dan kelakuannya. Objek ialah contoh kelas dan mempunyai semua sifat dan tingkah laku kelas. Sifat ialah ciri-ciri objek yang boleh menyimpan data. Kaedah ialah fungsi objek yang boleh beroperasi pada data objek. Kelebihan OOP Kelebihan utama OOP termasuk: Kebolehgunaan semula: OOP boleh menjadikan kod lebih banyak

Fungsi Go tersedia sebagai kaedah objek. Kaedah ialah fungsi yang dikaitkan dengan objek yang menyediakan akses kepada medan dan kaedah objek. Dalam Go, kaedah ditakrifkan menggunakan sintaks func(receiver_type)identifier(parameters)return_type. Pendekatan ini memainkan peranan penting dalam pengaturcaraan berorientasikan objek dengan menyediakan enkapsulasi, penggunaan semula dan kebolehlanjutan.

Terdapat dua jenis fungsi dalam PHPOOP: kaedah kelas dan kaedah statik. Kaedah kelas tergolong dalam kelas tertentu dan dipanggil oleh contoh kelas itu; kaedah statik tidak tergolong dalam mana-mana kelas dan dipanggil melalui nama kelas. Kaedah kelas diisytiharkan menggunakan fungsi awam, dan kaedah statik diisytiharkan menggunakan fungsi statik awam. Kaedah kelas dipanggil melalui contoh objek ($object->myMethod()), dan kaedah statik dipanggil terus melalui nama kelas (MyClass::myStaticMethod()).

Penggunaan dan Fungsi Fungsi Vue.use Vue ialah rangka kerja bahagian hadapan yang popular yang menyediakan banyak ciri dan fungsi berguna. Salah satunya ialah fungsi Vue.use, yang membolehkan kami menggunakan pemalam dalam aplikasi Vue. Artikel ini akan memperkenalkan penggunaan dan fungsi fungsi Vue.use dan memberikan beberapa contoh kod. Penggunaan asas fungsi Vue.use adalah sangat mudah, cuma panggilnya sebelum Vue diwujudkan, menghantar pemalam yang anda ingin gunakan sebagai parameter. Berikut ialah contoh mudah: //Perkenalkan dan gunakan pemalam

Kaedah file_exists menyemak sama ada fail atau direktori wujud. Ia menerima sebagai hujah laluan fail atau direktori untuk diperiksa. Inilah kegunaannya - ia berguna apabila anda perlu mengetahui sama ada fail wujud sebelum memprosesnya. Dengan cara ini, apabila mencipta fail baharu, anda boleh menggunakan fungsi ini untuk mengetahui sama ada fail itu sudah wujud. Syntax file_exists($file_path) Parameter file_path - Tetapkan laluan fail atau direktori untuk disemak kewujudan. Diperlukan. Kembalikan kaedah file_exists() kembali. Mengembalikan TrueFalse jika fail atau direktori wujud, jika fail atau direktori tidak wujud Contoh mari kita lihat semakan untuk fail "candidate.txt" dan walaupun fail
