Rumah  >  Artikel  >  hujung hadapan web  >  Hubungan atau keupayaan, kedua-dua kriteria ini digunakan

Hubungan atau keupayaan, kedua-dua kriteria ini digunakan

Barbara Streisand
Barbara Streisandasal
2024-10-07 06:22:29746semak imbas

Relationship or ability, both of these criteria are used

Dalam masyarakat, apabila menilai keupayaan dan nilai seseorang, selalunya terdapat dua kriteria yang berbeza: satu "berdasarkan perhubungan" dan satu lagi "berdasarkan kebolehan". Kedua-dua piawaian terkandung dalam budaya, industri dan nilai peribadi yang berbeza, masing-masing dengan penyokong dan pengkritiknya sendiri.

Dalam bahasa pengaturcaraan, terdapat dua jenis piawaian yang menyusun kod dalam cara yang berbeza, memautkan struktur data kepada fungsi. Artikel ini akan membincangkan secara ringkas aplikasi dan prinsip tindakan kedua-dua piawaian biasa ini.

model kelas

Dalam bahasa Javascript, kata kunci kelas disediakan, yang boleh kita gunakan untuk menentukan kelas. Yang penting, kelas boleh diperluaskan, dan apabila kaedah dipanggil pada contoh, mereka mencari definisi kaedah dalam susunan rantaian prototaip. Contohnya:


class Animal {
    move() { return 'move' }
}
class Monkey extends Animal {
    jump() { return 'jump' }
}
class Human extends Monkey {
    write() { return 'write' }
}


melanjutkan Kata Kunci boleh membantu kami mentakrifkan kelas baharu yang meluas daripada kelas lain. Kita boleh mendapatkan rantai prototaip seperti ini:


let me = new Human()
let proto = me.__proto__
let r = []

while (proto !== null) {
    r.push(proto.constructor.name)
    proto = proto.__proto__
}


Kita akan mendapat r seperti ini: ['Manusia', 'Monyet', 'Haiwan', 'Objek']. Apabila kita memanggil kaedah, kejayaan panggilan kaedah bergantung pada sama ada terdapat definisi yang sepadan pada rantai prototaip. Contohnya, jika anda memanggil saya.move(), ia mempunyai takrifan dalam kelas Haiwan dan panggilan itu berjaya.

Ini ialah model kelas, yang saya suka panggil sebagai model "hubungan", yang boleh dipanggil selagi ia ditakrifkan dalam kelas kejadian itu sendiri, atau dalam kelas induk, kelas datuk dan sebagainya pada.

Model berasaskan kompetensi

Berbanding dengan model berasaskan perhubungan, model berasaskan kecekapan adalah lebih mudah. Selagi tika itu memenuhi ciri tertentu, kaedah yang sepadan boleh bertindak ke atas tika itu tanpa mengira hubungan tika itu.


let me = {
    moveable: true,
    freezable: false
}

function move(x) { return x.moveable ? 'move' : undefined }
function freeze(x) { return x.freezable ? 'freeze' : undefined }


Dalam model ini, data dan kaedah adalah bebas antara satu sama lain. Kelebihannya ialah ia ringkas dan mudah, tetapi kelemahannya jelas, kerana kebebasan kaedah dan data, sukar untuk mengatasi definisi kaedah.

ringkasan

Selepas memperkenalkan dua cara menyambung struktur dan kaedah data, kita boleh berfikir bahawa apabila perlu untuk melaksanakan kaedah dengan fungsi yang berbeza dengan nama yang sama mengikut kelas data, adalah disyorkan untuk menggunakan model kelas hubungan . Apabila kaedah biasanya agak tetap, dan data boleh diubah, dan kaedah yang sama berfungsi pada data yang berbeza, model berasaskan Kompetensi boleh digunakan.

Atas ialah kandungan terperinci Hubungan atau keupayaan, kedua-dua kriteria ini digunakan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn