Konstruktor Objek JavaScript
- Halaman Sebelumnya Aksesori Objek JS
- Halaman Berikutnya Prototipe Objek JS
实例
function Person(first, last, age, eye) { this.firstName = first; this.lastName = last; this.age = age; this.eyeColor = eye; }
Berbicara dalam huruf besar untuk menamai fungsi konstraktor adalah kebiasaan yang baik.
Tipe objek (rancangan) (kelas)
Contoh di bab sebelumnya adalah terbatas. Mereka hanya membuat objek tunggal.
Kadang-kadang kita perlu membuat banyak objek yang "tipe" yang sama:Rancangan”.
Cara untuk membuat "tipe objek" adalah menggunakanFungsi konstraktor objek。
Pada contoh di atas,Fungsi Person() itu adalah fungsi konstraktor objek.
Dengan new Pemanggilan kata kunci fungsi konstraktor dapat membuat objek yang bertipe yang sama:
var myFather = new Person("Bill", "Gates", 62, "blue"); var myMother = new Person("Steve", "Jobs", 56, "green");
this kata kunci
Dalam JavaScript, disebut this
yang dimiliki adalah pemilik kode.
this
nilai itu, saat digunakan dalam objek, adalah objek itu sendiri.
Dalam fungsi konstraktor,this
Tidak ada nilai. Ini adalah pengganti objek baru. Saat objek baru dibuat, nilai this akan menjadi objek itu sendiri.
Perhatikan this
Bukan variabel. Ini adalah kata kunci. Anda tidak dapat mengubah nilai this.
Menambahkan atribut ke objek
Menambahkan atribut baru ke objek yang sudah ada sangat mudah:
实例
myFather.nationality = "English";
Atribut baru ditambahkan ke myFather. Bukan myMother, dan bukan objek person lainnya.
Menambahkan metode ke objek
Menambahkan metode baru ke objek yang sudah ada sangat mudah:
实例
myFather.name = function () { return this.firstName + " " + this.lastName; };
Metode baru ditambahkan ke myFather. Bukan myMother, dan bukan objek person lainnya.
Menambahkan atribut ke konstruktur
Beberapa dengan menambahkan atribut baru ke objek yang sudah ada, Anda tidak dapat menambahkan atribut baru ke fungsi konstruktur objek:
实例
Person.nationality = "English";
Untuk menambahkan atribut baru ke konstruktur, Anda harus menambahkannya ke fungsi konstruktur:
实例
function Person(first, last, age, eyecolor) { this.firstName = first; this.lastName = last; this.age = age; this.eyeColor = eyecolor; this.nationality = "English"; }
Dengan cara ini, properti objek dapat memiliki nilai default.
Menambahkan metode ke konstruktur
Fungsi konstruktur Anda juga dapat mendefinisikan metode:
实例
function Person(first, last, age, eyecolor) { this.firstName = first; this.lastName = last; this.age = age; this.eyeColor = eyecolor; this.name = function() {return this.firstName + " " + this.lastName;}; }
Beberapa dengan menambahkan metode baru ke objek yang sudah ada, Anda tidak dapat menambahkan metode baru ke fungsi konstruktur objek.
Harus di dalam fungsi konstruktur untuk menambahkan metode ke objek:
实例
function Person(firstName, lastName, age, eyeColor) { this.firstName = firstName; this.lastName = lastName; this.age = age; this.eyeColor = eyeColor; this.changeName = function (name) { this.lastName = name; }; }
Fungsi changeName() mengeset nilai name ke atribut lastName objek person.
现在您可以试一试:
myMother.changeName("Jobs");
通过用 myMother
替代 this,JavaScript 可以获知目前处理的哪个 person。
内建 JavaScript 构造器
JavaScript 提供用于原始对象的构造器:
实例
var x1 = new Object(); // 一个新的 Object 对象 var x2 = new String(); // 一个新的 String 对象 var x3 = new Number(); // 一个新的 Number 对象 var x4 = new Boolean(); // 一个新的 Boolean 对象 var x5 = new Array(); // 一个新的 Array 对象 var x6 = new RegExp(); // 一个新的 RegExp 对象 var x7 = new Function(); // 一个新的 Function 对象 var x8 = new Date(); // 一个新的 Date 对象
Math()
对象不再此列。Math 是全局对象。new
关键词不可用于 Math。
您知道吗?
正如以上所见,JavaScript 提供原始数据类型字符串、数字和布尔的对象版本。但是并无理由创建复杂的对象。原始值快得多!
请使用对象字面量 {}
代替 new Object()
。
请使用字符串字面量 ""
代替 new String()
。
请使用数值字面量代替 Number()
。
请使用布尔字面量代替 new Boolean()
。
请使用数组字面量 []
代替 new Array()
。
请使用模式字面量代替 new RexExp()
。
请使用函数表达式 () {}
代替 new Function()
。
实例
var x1 = {}; // 新对象 var x2 = ""; // 新的原始字符串 var x3 = 0; // 新的原始数值 var x4 = false; // 新的原始逻辑值 var x5 = []; // Objek array baru var x6 = /()/ // Objek ekspresi reguler baru var x7 = function(){}; // Objek fungsi baru
Objek String
Secara biasa, string dibuat sebagai nilai asli: var firstName = "Bill"
tetapi dapat digunakan new
Membuat objek string dengan kata kunci: var firstName = new String("Bill")
Silakan String JSPanduan di bab ini tentang mengapa tidak seharusnya membuat string sebagai objek.
Objek Numerik
Secara biasa, nilai numerik dibuat sebagai nilai asli: var x = 456
tetapi dapat digunakan new
Membuat objek numerik dengan kata kunci: var x = new Number(456)
Silakan Numerik JSPanduan di bab ini tentang mengapa tidak seharusnya membuat nilai numerik sebagai objek.
Objek Boolean
Secara biasa, nilai logika dibuat sebagai nilai asli: var x = false
tetapi dapat digunakan new
Membuat objek logika dengan kata kunci: var x = new Boolean(false)
Silakan Logika JSPanduan di bab ini tentang mengapa tidak seharusnya membuat nilai logika sebagai objek.
- Halaman Sebelumnya Aksesori Objek JS
- Halaman Berikutnya Prototipe Objek JS