Adakah kelas es6 dalam mod ketat?
ialah mod ketat. Secara dalaman, kelas dan modul es6 lalai kepada mod ketat, jadi tidak perlu menggunakan "guna ketat" untuk menentukan mod berjalan selagi kod ditulis dalam kelas atau modul, hanya mod ketat tersedia. Memandangkan semua kod masa hadapan sebenarnya akan dijalankan dalam modul, ES6 sebenarnya menaik taraf keseluruhan bahasa kepada mod ketat.
Persekitaran pengendalian tutorial ini: sistem Windows 7, ECMAScript versi 6, komputer Dell G3.
Penjelasan terperinci kelas Kelas dalam es6
Sintaks asas kelas
Bahasa JavaScript , kaedah tradisional untuk menghasilkan objek contoh adalah melalui corak gabungan pembina dan prototaip ES6 menyediakan kaedah penulisan yang lebih dekat dengan bahasa tradisional (java) dan memperkenalkan konsep Kelas sebagai templat untuk objek. Kelas boleh ditakrifkan melalui kata kunci kelas.
class point{ constructor(x,y){ this.x=x; this.y=y; } play(){ console.log("我会玩"); } }
Kelas ES6 boleh dilihat sebagai hanya gula sintaksis yang boleh dicapai oleh ES5 Kaedah penulisan kelas baharu hanya menjadikan kaedah penulisan prototaip objek lebih jelas dan lebih berorientasikan objek sintaks pengaturcaraan.
Nota: "Syntactic sugar": ialah istilah yang dicipta oleh saintis komputer British Peter J. Landin, yang merujuk kepada sintaks tertentu yang ditambahkan pada bahasa komputer ini bermanfaat kepada bahasa tiada kesan, tetapi ia lebih mudah untuk digunakan oleh pengaturcara.
Beberapa perkara teras yang perlu diberi perhatian tentang kelas ES6 dan kaedah penulisan ES5: Titik pembina ES5 sepadan dengan kaedah pembina kelas Titik ES6. Semua kaedah kelas ditakrifkan pada atribut prototaip kelas. Apabila mentakrifkan kaedah "kelas", tidak perlu menambah fungsi kata kunci di hadapannya, hanya letakkan definisi fungsi terus di dalamnya. Tidak perlu memisahkan kaedah dengan koma Jika ditambah, ralat akan dilaporkan. Kaedah penggunaan kelas ES6 adalah sama dengan pembina ES5
//类的所有方法都定义在类的prototype属性上面。 class piont{ constructor(){ // } play(){ } } //上述代码等价于 point.prototype={ constructor() { }, play(){ }; } //在类的实例上面调用方法,其实就是调用原型上的方法。 class Ba{ // } let b=new Ba(); b.constructor===Ba.prototype.constructor//true
Selain itu: Titik pembina ES5 sepadan dengan pembina kelas Point ES6.
Memandangkan kaedah kelas ditakrifkan pada objek prototaip, kaedah baharu kelas boleh ditambah pada objek prototaip. Kaedah Object.assign memudahkan untuk menambah berbilang kaedah pada kelas sekaligus.
class ponit{ constructor(){ } } Object.assign(Point.prototype,{ play(){ }; }) //Class直接定义的方法之间不需要逗号分隔,加了会报错. 但是这里是Object.assign的方法格式, 这里面需要往Point.prototype里面添加的方法就需要符合对象的默认格式
Semua kaedah yang ditakrifkan di dalam kelas tidak boleh dikira. Kaedah yang ditambahkan pada prototaip kelas melalui kaedah Object.assign, pembina tidak boleh dikira, yang lain boleh dikira
Kaedah pembina sintaks asas Kelas
Ia adalah kaedah lalai kelas Kaedah ini dipanggil secara automatik apabila contoh objek dijana melalui arahan baharu. Kelas mesti mempunyai kaedah pembina Jika tidak ditakrifkan dengan jelas, kaedah pembina kosong akan ditambah secara lalai.
Kaedah pembina mengembalikan objek contoh (iaitu ini) secara lalai, dan anda boleh menentukan untuk mengembalikan objek lain (Tetapan mesti ditakrifkan semasa mencipta kelas. Selepas kelas dicipta, nilai pulangan pembina tidak boleh diubah melalui Object.assign).
Salah satu sintaks asas panggilan Kelas Kelas kaedah
Kelas mesti dipanggil menggunakan baru, jika tidak ralat akan dilaporkan. Ini adalah perbezaan utama daripada pembina biasa (pembina biasa boleh digunakan sebagai fungsi biasa), yang boleh dilaksanakan tanpa yang baru.
Sintaks asas pengambil dan penetap Kelas
adalah sama seperti ES5, dalam " Anda boleh menggunakan kata kunci dapatkan dan tetapkan di dalam "kelas" untuk menetapkan fungsi storan nilai dan fungsi nilai untuk atribut tertentu untuk memintas gelagat akses atribut. Kod di atas, nama kaedah getArea kelas Square diperolehi daripada ungkapan.
class demo{ constructor(age){ this.age=agie; this._age=age; } get age(){ return this._age; } set age(value){ this._age=value; console.log("年龄"+value); } } let kevin=new demo(9); kevin.age=18; console.log(kevin.age);
Mata perhatian khusus pada sintaks asas Kelas
(1) Mod ketatSecara dalaman, lalai ialah mod ketat untuk kelas dan modul, jadi ia tidak Anda perlu menggunakan penggunaan ketat untuk menentukan mod berjalan. Selagi kod anda ditulis dalam kelas atau modul, hanya mod ketat tersedia. Memandangkan semua kod masa hadapan sebenarnya akan dijalankan dalam modul, ES6 sebenarnya menaik taraf keseluruhan bahasa kepada mod ketat. (2) Tiada promosi
Dalam kod di atas, kelas Foo digunakan dahulu dan ditakrifkan kemudian. Ini akan menyebabkan ralat kerana ES6 tidak akan mempromosikan pengisytiharan kelas kepada kepala kod.
(3) atribut nama
Pada asasnya, kelas ES6 hanyalah pembalut untuk pembina ES5, jadi banyak ciri fungsi diwarisi oleh Kelas, termasuk atribut nama . (4) Ini menunjukkan kepada Jika kaedah kelas mengandungi ini, ia akan menunjuk kepada contoh kelas secara lalai. Walau bagaimanapun, anda mesti berhati-hati kerana jika anda menggunakan kaedah ini sahaja, anda mungkin mendapat ralat.new foo(); class foo{};
printName方法中的this,默认指向Logger类的实例。但是,如果将这个方法提取出来单独使用,this会指向该方法运行时所在的环境(由于 class 内部是严格模式,所以 this 实际指向的是undefined),从而导致找不到print方法而报错。
解决办法:
一个比较简单的解决方法是,在构造方法中绑定this,这样就不会找不到print方法了。
另一种解决方法是使用箭头函数。箭头函数位于构造函数内部,它的定义生效的时候,是在构造函数执行的时候。这时,箭头函数所在的运行环境,肯定是实例对象,所以this会总是指向实例对象。
class Logger{ constructor(){ this.printName=this.printName.bind(this); //但是请注意bind之后返回的函数里面的this就永久锁死了问题:!!! !!! 坚决别用 } } //箭头函数 class Obj{ constructor(){ this.getThis=()=>this; } } let o=new Obj(); o.getThis()===o//true
Class的静态属性和方法
类相当于实例的原型,所有在类中定义的方法,都会被实例继承。如果在一个方法前,加上static关键字,就表示该方法不会被实例继承,而是直接通过类来调用,这就称为“静态方法”。
class Person{ static sum=0; constructor(){ this.add(); } add(){ Person.sum++; } } let kaiwen=new Person(); console.log("当前的聊天室人数为:"+Person.sum); //作用:当没有实例化的时候,我们可以通过静态的属性和方法去获取一些信息 // 注意,如果静态方法包含this关键字,这个this指的是类,而不是实例。静态方法可以与非静态方法重名。
父类的静态方法,可以被子类继承静态方法也是可以从super对象上调用的。
class Person{ constructor(name){ this.name=name; this.sex="男"; } } class Student extends Person{ constructor(name,age){ super(name); this.age=age; } } let s=new Student("张三",11); console.log(s.name); console.log(s.age); console.log(s.sex);
Class的私有方法和私有属性
私有方法和私有属性:是只能在类的内部访问的方法和属性,外部不能访问。 这是常见需求,有利于代码的封装,但 ES6 不提供,只能通过变通方法模拟实现。
_bar方法前面的下划线,表示这是一个只限于内部使用的私有方法。但是,这种命名是不保险的,在类的外部,还是可以调用到这个方法
下面代码中的写法不仅可以写私有属性,还可以用来写私有方法
class Cat{ #eyes="眼睛"; static pai(){ console.log("凯文"); } say(){ Cat.pai(); console.log("猫有一双大大的"+this.#eyes); } } let kate=new Cat(); kate.say();
私有属性也可以设置 getter 和 setter 方法。
私有属性不限于从this引用,只要是在类的内部,实例也可以引用私有属性。
构造函数的新属性
ES6 为new命令引入了一个new.target属性,该属性一般用在构造函数之中,返回new命令作用于的那个构造函数。如果构造函数不是通过new命令调用的,new.target会返回undefined,因此这个属性可以用来确定构造函数是怎么调用的。
私有属性也可以设置 getter 和 setter 方法。
私有属性不限于从this引用,只要是在类的内部,实例也可以引用私有属性。
【相关推荐:javascript视频教程、编程视频】
Atas ialah kandungan terperinci Adakah kelas es6 dalam mod ketat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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



Cara menggunakan WebSocket dan JavaScript untuk melaksanakan sistem pengecaman pertuturan dalam talian Pengenalan: Dengan perkembangan teknologi yang berterusan, teknologi pengecaman pertuturan telah menjadi bahagian penting dalam bidang kecerdasan buatan. Sistem pengecaman pertuturan dalam talian berdasarkan WebSocket dan JavaScript mempunyai ciri kependaman rendah, masa nyata dan platform merentas, dan telah menjadi penyelesaian yang digunakan secara meluas. Artikel ini akan memperkenalkan cara menggunakan WebSocket dan JavaScript untuk melaksanakan sistem pengecaman pertuturan dalam talian.

WebSocket dan JavaScript: Teknologi utama untuk merealisasikan sistem pemantauan masa nyata Pengenalan: Dengan perkembangan pesat teknologi Internet, sistem pemantauan masa nyata telah digunakan secara meluas dalam pelbagai bidang. Salah satu teknologi utama untuk mencapai pemantauan masa nyata ialah gabungan WebSocket dan JavaScript. Artikel ini akan memperkenalkan aplikasi WebSocket dan JavaScript dalam sistem pemantauan masa nyata, memberikan contoh kod dan menerangkan prinsip pelaksanaannya secara terperinci. 1. Teknologi WebSocket

Pengenalan kepada cara menggunakan JavaScript dan WebSocket untuk melaksanakan sistem pesanan dalam talian masa nyata: Dengan populariti Internet dan kemajuan teknologi, semakin banyak restoran telah mula menyediakan perkhidmatan pesanan dalam talian. Untuk melaksanakan sistem pesanan dalam talian masa nyata, kami boleh menggunakan teknologi JavaScript dan WebSocket. WebSocket ialah protokol komunikasi dupleks penuh berdasarkan protokol TCP, yang boleh merealisasikan komunikasi dua hala masa nyata antara pelanggan dan pelayan. Dalam sistem pesanan dalam talian masa nyata, apabila pengguna memilih hidangan dan membuat pesanan

Cara menggunakan WebSocket dan JavaScript untuk melaksanakan sistem tempahan dalam talian Dalam era digital hari ini, semakin banyak perniagaan dan perkhidmatan perlu menyediakan fungsi tempahan dalam talian. Adalah penting untuk melaksanakan sistem tempahan dalam talian yang cekap dan masa nyata. Artikel ini akan memperkenalkan cara menggunakan WebSocket dan JavaScript untuk melaksanakan sistem tempahan dalam talian dan memberikan contoh kod khusus. 1. Apakah itu WebSocket? WebSocket ialah kaedah dupleks penuh pada sambungan TCP tunggal.

JavaScript dan WebSocket: Membina sistem ramalan cuaca masa nyata yang cekap Pengenalan: Hari ini, ketepatan ramalan cuaca sangat penting kepada kehidupan harian dan membuat keputusan. Apabila teknologi berkembang, kami boleh menyediakan ramalan cuaca yang lebih tepat dan boleh dipercayai dengan mendapatkan data cuaca dalam masa nyata. Dalam artikel ini, kita akan mempelajari cara menggunakan teknologi JavaScript dan WebSocket untuk membina sistem ramalan cuaca masa nyata yang cekap. Artikel ini akan menunjukkan proses pelaksanaan melalui contoh kod tertentu. Kami

Tutorial JavaScript: Bagaimana untuk mendapatkan kod status HTTP, contoh kod khusus diperlukan: Dalam pembangunan web, interaksi data dengan pelayan sering terlibat. Apabila berkomunikasi dengan pelayan, kami selalunya perlu mendapatkan kod status HTTP yang dikembalikan untuk menentukan sama ada operasi itu berjaya dan melaksanakan pemprosesan yang sepadan berdasarkan kod status yang berbeza. Artikel ini akan mengajar anda cara menggunakan JavaScript untuk mendapatkan kod status HTTP dan menyediakan beberapa contoh kod praktikal. Menggunakan XMLHttpRequest

Penggunaan: Dalam JavaScript, kaedah insertBefore() digunakan untuk memasukkan nod baharu dalam pepohon DOM. Kaedah ini memerlukan dua parameter: nod baharu untuk dimasukkan dan nod rujukan (iaitu nod di mana nod baharu akan dimasukkan).

JavaScript ialah bahasa pengaturcaraan yang digunakan secara meluas dalam pembangunan web, manakala WebSocket ialah protokol rangkaian yang digunakan untuk komunikasi masa nyata. Menggabungkan fungsi berkuasa kedua-duanya, kami boleh mencipta sistem pemprosesan imej masa nyata yang cekap. Artikel ini akan memperkenalkan cara untuk melaksanakan sistem ini menggunakan JavaScript dan WebSocket, dan memberikan contoh kod khusus. Pertama, kita perlu menjelaskan keperluan dan matlamat sistem pemprosesan imej masa nyata. Katakan kita mempunyai peranti kamera yang boleh mengumpul data imej masa nyata
