cari
Rumahhujung hadapan webSoal Jawab bahagian hadapanRingkasan pembelajaran JavaScript objek prototaip (tersusun dan dikongsi)

Artikel ini membawakan anda pengetahuan yang berkaitan tentang objek prototaip dalam JavaScript saya harap ia akan membantu anda.

Ringkasan pembelajaran JavaScript objek prototaip (tersusun dan dikongsi)

Kelas anda faham? Apakah ciri-ciri kelas? (Encapsulation, inheritance, polymorphism)

Kelas sebenarnya ialah "fungsi khas". Sama seperti ungkapan fungsi dan pengisytiharan fungsi yang anda boleh takrifkan, sintaks kelas juga terdiri daripada dua Komponen: Pengisytiharan kelas dan ekspresi kelas. Badan kelas dilaksanakan dalam mod ketat.

Isi kelas kelas ialah bahagian yang dikelilingi oleh sepasang pendakap kerinting {}, iaitu tempat ahli kelas ditakrifkan. [Ahli terutamanya kaedah atau pembina]

Semua kaedah kelas adalah setara dengan ditakrifkan pada atribut prototaip kelas. Memanggil kaedah pada contoh kelas adalah sama dengan memanggil kaedah pada prototaip.

class A(){
    constructor(){}
    a(){}
    b(){}
}
//等价于
A.prototype={constructor(){},a(){},b(){}}

Komposisi:

  • Pembina:

Kaedah pembina ialah kaedah khas cipta dan mulakan objek yang dicipta oleh kelas. Kelas hanya boleh mempunyai satu pembina Jika terdapat berbilang pembina, ralat akan dilaporkan Jika tiada pembina, pembina kosong akan ditambah secara lalai. Pembina mengembalikan objek lajur sebenar [iaitu ini] secara lalai. Pembina boleh menggunakan kata kunci super untuk memanggil pembina kelas induk.

  • Atribut

  • Kaedah prototaip: Kaedah ini tidak perlu menambah kata kunci fungsi, cuma letakkan definisi fungsi secara terus. Kaedah tidak boleh dipisahkan dengan koma, jika tidak ralat akan dilaporkan.

  • Kaedah statik: Gunakan statik untuk menentukan kaedah statik dan memanggil kaedah statik Mereka tidak boleh dipanggil oleh contoh kelas, tetapi hanya boleh dipanggil dengan menggunakan kelas.

  • Penetap fungsi nilai dan fungsi storan: Gunakan kata kunci dapatkan dan tetapkan dalam kelas untuk menetapkan fungsi storan dan nilai untuk atribut tertentu dan memintas akses kepada Kelakuan.

Sintaks kelas:

  • Pengisytiharan kelas: Gunakan kata kunci kelas

class Rectangle{
    constructor(height,width){
        this.height=height;
        this.width=width;
    }
}

Nota: Perbezaan antara pengisytiharan fungsi dan pengisytiharan kelas: pengisytiharan kelas tidak akan dinaikkan pangkat, pengisytiharan fungsi akan dinaikkan pangkat.

Ungkapan kelas: Ungkapan kelas boleh dinamakan atau tanpa nama. Nama yang diberikan kepada ungkapan kelas bernama ialah nama tempatan badan kelas.

 let Rectangle=class{//匿名类
      constructor(height,width){
            this.height=height;
            this.width=width;
        }
 }
 let Rectangle= class Rectangle{//命名类
      constructor(height,width){
            this.height=height;
            this.width=width;
        }
 }

Gunakan lanjutan untuk mencipta subkelas:

Kata kunci extends digunakan dalam pengisytiharan kelas atau ungkapan kelas untuk mencipta kelas sebagai subkelas kelas lain.

Gunakan super untuk memanggil kelas super:

Kata kunci super digunakan untuk memanggil fungsi pada objek induk objek

Ciri-ciri kelas:

- Enkapsulasi: Terutamanya melalui fungsi, penetapan sifat persendirian dan kaedah terutamanya dicapai melalui skop peringkat blok

- Polimorfisme: Boleh dipanggil melalui fungsi, kerana parameter boleh Berubah

- Warisan: terutamanya melalui rantai prototaip

Apa yang berlaku apabila kita baharu fungsi normal?

  • Buat objek baharu menggunakan atribut prototaip pembina (perhatikan perbezaan daripada medan persendirian [[prototaip]]) sebagai prototaip;

  • Lulus ini dan parameter panggilan kepada pembina dan laksanakan;
  • baharu Tingkah laku ini cuba menjadikan sintaks objek fungsi serupa dengan kelas Walau bagaimanapun, ia secara objektif menyediakan dua cara Satu ialah menambah Atribut, yang kedua ialah menambah atribut kepada atribut prototaip pembina.

  • Adakah nama fungsi selepas nama baharu perlu menggunakan huruf besar?

Tidak, ia adalah terutamanya untuk kemudahan membezakan kategori. Kekangan umum adalah huruf besar

Bagaimana untuk memahami ProtoType Proses mencari atribut tertentu objek?

prototaip:Setiap fungsi mempunyai atribut khas yang dipanggil objek prototaip [prototaip]

js adalah berdasarkan In bahasa prototaip, setiap objek mempunyai objek prototaip, dan objek menggunakan prototaipnya sebagai templat dan mewarisi kaedah dan sifat daripada prototaip. Sifat dan kaedah ini ditakrifkan pada atribut prototaip di atas pembina objek, bukan pada contoh objek itu sendiri. Objek prototaip boleh mempunyai objek prototaip dan mewarisi kaedah dan sifat daripadanya, lapisan demi lapisan, lapisan demi lapisan sehingga objek prototaip objek adalah nol Ini ialah rantaian prototaip.

Apabila mencipta tika objek, pautan diwujudkan antara tika objek dan pembinanya [__proto__ atribut, yang diperoleh daripada atribut prototaip pembina. Iaitu, __proto__ dan prototaip pembina menghala ke objek yang sama] Object.getPrototypeof(new Foobar()) dan Foobar.prototype adalah sama.

Object.create(). Mencipta objek baharu daripada objek prototaip yang ditentukan. var newObj=Object.create(obj). Kemudian newObj's __proto__=obj

Setiap objek lajur sebenar mewarisi atribut pembina daripada prototaip. Harta ini menunjuk kepada pembina yang membina contoh ini.

Secara amnya, atribut ditakrifkan dalam pembina dan kaedah ditakrifkan dalam prototaip.

一般由构造函数实列化出一个新对象,新对象的原型对象是一个constructor和一个Object的原型对象组成。而函数构造函数的原型对象是也是由另外一个constructor和一个Function的原型对象组成。

    var F=function(){};
    Object.prototype.a=function(){};
    Function.prototype.b=function(){};
    var f=new F();
    //上面的结果是,f能取到a,不能取到b.
    详解:
        1.f.__proto__===F.prototype
        2.F.prototype.__proto__===Object.prototype(所以f可以访问a)
        3.f.constructor===F
        4.F.__proto__===Function.prototype(所以f.constructor.b可以访问)

查找属性的过程:

1.先查找自己身属性是否由包含该属性。

2.如果没有,才会沿着原型链,层层向上搜索,直到找到名字的属性

3.如果找到最后原型链的末尾,即最后的原型为null,那就是没有找到该属性。就会返回undefined

不同方法创建对象和原型链

1.使用语法结构创建对象

var o = {a: 1};
// o 这个对象继承了 Object.prototype 上面的所有属性
// o 自身没有名为 hasOwnProperty 的属性
// hasOwnProperty 是 Object.prototype 的属性
// 因此 o 继承了 Object.prototype 的 hasOwnProperty
// Object.prototype 的原型为 null
// 原型链如下:
// o ---> Object.prototype ---> null
var a = ["yo", "whadup", "?"];
// 数组都继承于 Array.prototype 
// (Array.prototype 中包含 indexOf, forEach 等方法)
// 原型链如下:
// a ---> Array.prototype ---> Object.prototype ---> null
function f(){
return 2;
}
// 函数都继承于 Function.prototype
// (Function.prototype 中包含 call, bind等方法)
// 原型链如下:
// f ---> Function.prototype ---> Object.prototype ---> null

2.使用构造函数创建对象

function A() {
this.a = 1;
this.b = 2;
}
A.prototype = {
write: function(){
    console.log(this.a);
}
};
var a = new A();
// a 是生成的对象,他的自身属性有 'a' 和 'b'。

3.使用Object.create()创建对象(ES5)

var a = {a: 1}; 
// a ---> Object.prototype ---> null
var b = Object.create(a);
// b ---> a ---> Object.prototype ---> null
console.log(b.a); // 1 (继承而来)
var c = Object.create(b);
// c ---> b ---> a ---> Object.prototype ---> null
var d = Object.create(null);
// d ---> null
console.log(d.hasOwnProperty); // undefined, 因为d没有继承Object.prototype
使用

4.使用class创建对象(ES6)

class A {
constructor(a, b) {
    this.a = a;
    this.b = b;
}
}
class B extends A {
constructor(a,b,c) {
    super(a, b);
    this.c=c;
}
get ab() {
    return this.a + this.b;
}
set d(d) {
    this.a = d;
    this.b = d;
    this.c = d;
}
}
var a= new A('a','b');//a的原型对象是 A.prototype
var b = new B('a','b','c');//    //b的原型对象是 B.prototype

当一个对象设置属性时都发生了什么?

如果对象包含普通数据访问属性,直接赋值只会修改属性值

    var a={b=1}//因为b是a的普通属性,数据类型为Number

    a.b="a";  //直接更改b的类型为String,且赋值为'a'.

如果对象找不到该属性,且原型链也找不到,就直接默认添加一个属性到该对象上。

    var a={}//b不是a的普通属性,且原型链上也没有

    a.b="a";  //直接在a上添加b的类型,为String,且赋值为'a'.

如果属性b,存在于原型链上

//在原型链上层存在名为b的普通数据访问属性并且没有标记为只读(writable:false),那就会直接在a中添加一个名为b的新属性,且值为'a'。而原型链上的b就会被屏蔽掉:

    function A(){};
    A.prototype.b=1;
    var a=new A();
    a.b='a';

//在原型链上层存在b,但是他被标记为只读,那么无法修改已有属性,或者在a中创建屏蔽属性。如果运行在严格模式下,代码会抛出一个错误,否则,这条赋值语句会被忽略,总之,不会发生屏蔽。

    function A(){
    };
A.prototype.b=1
    Object.defineProperty(A.prototype,'b',{
        configurable:true,
        writable:false
    })
    var a=new A();
    a.b='a';//结果a.b还是1

【相关推荐:javascript学习教程

Atas ialah kandungan terperinci Ringkasan pembelajaran JavaScript objek prototaip (tersusun dan dikongsi). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Artikel ini dikembalikan pada:掘金. Jika ada pelanggaran, sila hubungi admin@php.cn Padam
React: Kekuatan perpustakaan JavaScript untuk pembangunan webReact: Kekuatan perpustakaan JavaScript untuk pembangunan webApr 18, 2025 am 12:25 AM

React adalah perpustakaan JavaScript yang dibangunkan oleh Meta untuk membina antara muka pengguna, dengan terasnya menjadi pembangunan komponen dan teknologi DOM maya. 1. Komponen dan Pengurusan Negeri: React menguruskan keadaan melalui komponen (fungsi atau kelas) dan cangkuk (seperti UseState), meningkatkan kebolehgunaan semula kod dan penyelenggaraan. 2. DOM maya dan pengoptimuman prestasi: Melalui DOM maya, bereaksi dengan cekap mengemas kini DOM sebenar untuk meningkatkan prestasi. 3. Kitaran Hidup dan Cangkuk: Cangkuk (seperti Useeffect) membolehkan komponen fungsi menguruskan kitaran hayat dan melakukan operasi kesan sampingan. 4. Contoh Penggunaan: Dari Komponen Helloworld Asas ke Pengurusan Negeri Global Lanjutan (USEContext dan

Ekosistem React: Perpustakaan, Alat, dan Amalan TerbaikEkosistem React: Perpustakaan, Alat, dan Amalan TerbaikApr 18, 2025 am 12:23 AM

Ekosistem React termasuk perpustakaan pengurusan negeri (seperti redux), perpustakaan penghalaan (seperti reactrouter), perpustakaan komponen UI (seperti bahan-UI), alat ujian (seperti jest), dan alat bangunan (seperti webpack). Alat ini bekerjasama untuk membantu pemaju membangun dan mengekalkan aplikasi dengan cekap, meningkatkan kualiti kod dan kecekapan pembangunan.

Pembangunan React dan Frontend: Gambaran keseluruhan yang komprehensifPembangunan React dan Frontend: Gambaran keseluruhan yang komprehensifApr 18, 2025 am 12:23 AM

React adalah perpustakaan JavaScript yang dibangunkan oleh Facebook untuk membina antara muka pengguna. 1. Ia mengamalkan teknologi DOM komponen dan maya untuk meningkatkan kecekapan dan prestasi pembangunan UI. 2. Konsep teras React termasuk komponenisasi, pengurusan negeri (seperti useState dan useeffect) dan prinsip kerja dom maya. 3. 4. Kesilapan umum seperti melupakan untuk menambah atribut utama atau kemas kini status yang salah boleh didebitkan melalui ReactDevTools dan log. 5. Pengoptimuman prestasi dan amalan terbaik termasuk menggunakan react.memo, segmentasi kod dan menyimpan kod yang boleh dibaca dan mengekalkan kebolehpercayaan

Kekuatan React dalam HTML: Pembangunan Web ModenKekuatan React dalam HTML: Pembangunan Web ModenApr 18, 2025 am 12:22 AM

Penggunaan React dalam HTML meningkatkan kecekapan dan fleksibiliti pembangunan web melalui komponen dan DOM maya. 1) Idea komponen reaksi memecah UI ke dalam unit yang boleh diguna semula untuk memudahkan pengurusan. 2) Prestasi pengoptimuman DOM maya, meminimumkan operasi DOM melalui algoritma yang berbeza. 3) Sintaks JSX membolehkan penulisan HTML dalam JavaScript untuk meningkatkan kecekapan pembangunan. 4) Gunakan cangkuk UseState untuk menguruskan keadaan dan merealisasikan kemas kini kandungan dinamik. 5) Strategi pengoptimuman termasuk menggunakan react.memo dan usecallback untuk mengurangkan rendering yang tidak perlu.

Memahami Fungsi Utama React: Perspektif FrontendMemahami Fungsi Utama React: Perspektif FrontendApr 18, 2025 am 12:15 AM

Fungsi utama React termasuk pemikiran komponen, pengurusan negeri dan dom maya. 1) Idea komponenisasi membolehkan pemisahan UI menjadi bahagian yang boleh diguna semula untuk meningkatkan kebolehbacaan kod dan kebolehkerjaan. 2) Pengurusan Negeri menguruskan data dinamik melalui negeri dan prop, dan perubahan mencetuskan kemas kini UI. 3) Prestasi Pengoptimuman DOM Maya, kemas kini UI melalui pengiraan operasi minimum Replika DOM dalam ingatan.

Pembangunan Frontend dengan React: Kelebihan dan TeknikPembangunan Frontend dengan React: Kelebihan dan TeknikApr 17, 2025 am 12:25 AM

Kelebihan React adalah fleksibiliti dan kecekapannya, yang dicerminkan dalam: 1) Reka bentuk berasaskan komponen meningkatkan kebolehgunaan semula kod; 2) Teknologi DOM Maya mengoptimumkan prestasi, terutamanya apabila mengendalikan banyak kemas kini data; 3) Ekosistem yang kaya menyediakan sejumlah besar perpustakaan dan alat pihak ketiga. Dengan memahami bagaimana React Works dan menggunakan contoh, anda boleh menguasai konsep terasnya dan amalan terbaik untuk membina antara muka pengguna yang cekap dan boleh dipelihara.

React vs Rangka Kerja Lain: Membandingkan dan Berbeza PilihanReact vs Rangka Kerja Lain: Membandingkan dan Berbeza PilihanApr 17, 2025 am 12:23 AM

React adalah perpustakaan JavaScript untuk membina antara muka pengguna, sesuai untuk aplikasi besar dan kompleks. 1. Inti React adalah komponen dan DOM maya, yang meningkatkan prestasi rendering UI. 2. Berbanding dengan Vue, React lebih fleksibel tetapi mempunyai lengkung pembelajaran yang curam, yang sesuai untuk projek besar. 3. Berbanding dengan sudut, bertindak balas lebih ringan, bergantung kepada ekologi komuniti, dan sesuai untuk projek yang memerlukan fleksibiliti.

Demystifying React in HTML: Bagaimana semuanya berfungsiDemystifying React in HTML: Bagaimana semuanya berfungsiApr 17, 2025 am 12:21 AM

React beroperasi di HTML melalui DOM maya. 1) React menggunakan sintaks JSX untuk menulis struktur seperti HTML. 2) Kemas kini UI Pengurusan Maya DOM, rendering yang cekap melalui algoritma yang berbeza. 3) Gunakan reactDom.render () untuk menjadikan komponen ke DOM sebenar. 4) Pengoptimuman dan amalan terbaik termasuk menggunakan react.memo dan komponen pemisahan untuk meningkatkan prestasi dan penyelenggaraan.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌
Akan R.E.P.O. Ada Crossplay?
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

Muat turun versi mac editor Atom

Muat turun versi mac editor Atom

Editor sumber terbuka yang paling popular

MantisBT

MantisBT

Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan