ການປະກອບຄອມທູບບັນຍາບັນນາທິການ JavaScript
ຄວາມພາບ
function Person(first, last, age, eye) { this.firstName = first; this.lastName = last; this.age = age; this.eyeColor = eye; }
用大写首字母对构造器函数命名是个好习惯。
对象类型(蓝图)(类)
前一章的实例是有限制的。它们只创建单一对象。
有时我们需要创建相同“类型”的许多对象的“蓝图”。
创建一种“对象类型”的方法,是使用对象构造器函数。
在上面的例子中,函数 Person() 就是对象构造器函数。
通过 new 关键词调用构造器函数可以创建相同类型的对象:
var myFather = new Person("Bill", "Gates", 62, "blue"); var myMother = new Person("Steve", "Jobs", 56, "green");
this 关键词
在 JavaScript 中,被称为 this
的事物是代码的“拥有者”。
this
ຄຸນຄ່າ, ເມື່ອນຳໃຊ້ໃນວັດຖຸ, ຈະເປັນວັດຖຸດັ່ງກ່າວ.
ໃນການກຳນົດພາສານຂອງພະຍານ.this
ບໍ່ມີຄຸນຄ່າ. ມັນເປັນການແທນຂອງວັດຖຸໃໝ່. ເວລາທີ່ວັດຖຸໃໝ່ຖືກສ້າງຂື້ນ, ຄຸນຄ່າຂອງ this ຈະກາຍເປັນວັດຖຸໃໝ່ນັ້ນ.
ບັງຄັບວ່າ this
ນັ້ນບໍ່ແມ່ນສິ່ງທີ່ປ່ຽນຕົວຕາມຊື່ມວນຊົນພາສາລາວ,ນັ້ນແມ່ນສິ່ງທີ່ປ່ຽນຕົວຕາມຫົວຂໍ້ພາສາລາວ。ທ່ານບໍ່ສາມາດປ່ຽນຕົວຄູນຊື່ນັ້ນອອກມາ。
ການໃຫ້ມີລະບຸກອງການໃຫ້ອົງການ
ການໃຫ້ມີລະບຸກອງການໃຫ້ອົງການທີ່ມີກ່ອນແລ້ວແມ່ນຫຼາຍຢ່າງງ່າຍ:
ຄວາມພາບ
myFather.nationality = "English";
ລະບຸກອງການທີ່ບໍ່ແມ່ນ myMother ແລະບໍ່ແມ່ນອົງການ person ອື່ນໆຕາມ。
ການໃຫ້ມີວິທີການໃຫ້ອົງການ
ການໃຫ້ມີວິທີການໃຫ້ອົງການທີ່ມີກ່ອນແລ້ວແມ່ນຫຼາຍຢ່າງງ່າຍ:
ຄວາມພາບ
myFather.name = function () { return this.firstName + " " + this.lastName; };
ວິທີການໃຫ້ມີກອງການທີ່ບໍ່ແມ່ນ myMother ແລະບໍ່ແມ່ນອົງການ person ອື່ນໆຕາມ。
ການໃຫ້ມີລະບຸກອງການໃຫ້ກອງສັນຍາການ
ຕະຫຼົກຈາກການໃຫ້ມີລະບຸກອງການໃນອົງການທີ່ມີກ່ອນແລ້ວ,ທ່ານບໍ່ສາມາດໃຫ້ມີລະບຸກອງການໃຫ້ກອງສັນຍາການຂອງອົງການໄດ້:
ຄວາມພາບ
Person.nationality = "English";
ສຳລັບການໃຫ້ມີລະບຸກອງການໃຫ້ກອງສັນຍາການທີ່ໃໝ່,ທ່ານຕ້ອງໃຫ້ມີໃນກອງສັນຍາການຂອງວິທີການ:
ຄວາມພາບ
function Person(first, last, age, eyecolor) { this.firstName = first; this.lastName = last; this.age = age; this.eyeColor = eyecolor; this.nationality = "English"; }
ດັ່ງນັ້ນຜົນລະບຸກອງການຂອງອົງການສາມາດມີຄຸນນະພາບມາດຕະຖານສະເພາະນີ້。
ການໃຫ້ມີວິທີການໃຫ້ກອງສັນຍາການ
ກອງສັນຍາການຂອງທ່ານຍັງສາມາດກໍ່ຕັ້ງວິທີການຢູ່ໄດ້:
ຄວາມພາບ
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;}; }
ຕະຫຼົກຈາກການໃຫ້ມີວິທີການໃນອົງການທີ່ມີກ່ອນແລ້ວ,ທ່ານບໍ່ສາມາດໃຫ້ມີວິທີການໃຫ້ກອງສັນຍາການຂອງອົງການໄດ້。
ຕ້ອງການໃຫ້ມີວິທີການໃນກອງສັນຍາການຂອງອົງການດັ່ງກ່າວ:
ຄວາມພາບ
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; }; }
ກອງສັນຍາການ changeName() ຂັບເຊິ່ງຊື່ name ໄປໃຫ້ຄູນລະບຸຊື່ສຸດທ້າຍຂອງ 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 = []; // 新的数组对象 var x6 = /()/ // 新的正则表达式对象 var x7 = function(){}; // 新的函数对象
字符串对象
通常,字符串被创建为原始值:var firstName = "Bill"
但是也可以使用 new
关键词创建字符串对象:var firstName = new String("Bill")
请在 JS 字符串这一章中学习为何不应该把字符串创建为对象。
数字对象
通常,数值被创建为原始值:var x = 456
但是也可以使用 new
关键词创建数字对象:var x = new Number(456)
请在 JS 数字这一章中学习为何不应该把数值创建为对象。
布尔对象
通常,逻辑值被创建为原始值:var x = false
但是也可以使用 new
关键词创建逻辑对象:var x = new Boolean(false)
请在 JS 逻辑这一章中学习为何不应该把逻辑值创建为对象。