ການປະກອບຄອມທູບບັນຍາບັນນາທິການ 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 逻辑这一章中学习为何不应该把逻辑值创建为对象。