Turing Pagtatalaga ng Konstraktor ng Objetong JavaScript

mga halimbawa

function Person(first, last, age, eye) {
    this.firstName = first;
    this.lastName = last;
    this.age = age;
    this.eyeColor = eye;
}

亲自试一试

Ang mabuting kasanayan ay gumamit ng malaking unang titik para sa pangalan ng constructor function.

Uri ng bagay (蓝图) (klaseng)

Ang halimbawa sa nakaraang kabanata ay may limitasyon. Maaaring lumikha lang sila ng isang bagay lamang.

Minsan kailangan nating lumikha ng maraming bagay na may parehong "uri" na "蓝图

Ang paraan upang lumikha ng uri ng 'bagay' ay sa pamamagitan ngang constructor function ng bagay

Sa itaas na halimbawa,function Person(first, last, age, eye) { ito ang constructor function ng bagay.

Sa pamamagitan ng new Ang pagtawag ng palatandaan sa constructor function ay maaaring lumikha ng magkaparehong uri ng bagay:

var myFather = new Person("Bill", "Gates", 62, "blue");
var myMother = new Person("Steve", "Jobs", 56, "green");

亲自试一试

this palatandaan

sa JavaScript, tinatawag na this ang 'may-ari' ng mga bagay na ito ay ang code.

this ang halaga, kapag ginagamit sa isang bagay, ay ang bagay mismo.

Sa constructor function,this Wala ang halaga. Ito ang kahalili ng bagong bagay. Kapag binubuo ang isang bagong bagay, ang halaga ng 'this' ay magiging bagong bagay na iyon.

Pansin na ito. this Hindi ito variable. Ito ay keyword. Hindi mo magagawa na baguhin ang halaga ng this.

Magdagdag ng attribute sa object

Simple na idinagdag ng bagong attribute sa isang umiiral na object:

mga halimbawa

myFather.nationality = "English";

亲自试一试

Ang bagong attribute ay idinagdag sa myFather. Hindi sa myMother, o anumang ibang object na person.

Magdagdag ng method sa object

Simple na idinagdag ng bagong method sa isang umiiral na object:

mga halimbawa

myFather.name = function () {
    return this.firstName + " " + this.lastName;
};

亲自试一试

Ang bagong method ay idinagdag sa myFather. Hindi sa myMother, o anumang ibang object na person.

Magdagdag ng attribute sa constructor

Hindi tulad ng pagdagdag ng bagong attribute sa isang umiiral na object, hindi mo magagawa na magdagdag ng bagong attribute sa constructor ng object:

mga halimbawa

Person.nationality = "English";

亲自试一试

Kung gusto mong magdagdag ng bagong attribute sa constructor, dapat itong idagdag sa constructor function:

mga halimbawa

function Person(first, last, age, eyecolor) {
    this.firstName = first;
    this.lastName = last;
    this.age = age;
    this.eyeColor = eyecolor;
    this.nationality = "English";
}

亲自试一试

Ginagamit ito upang ang mga attribute ng object ay may default na halaga.

Magdagdag ng method sa constructor

Maaari rin ng iyong constructor function na mag-definir ng method:

mga halimbawa

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;};
}

亲自试一试

Hindi tulad ng pagdagdag ng bagong method sa isang umiiral na object, hindi mo magagawa na magdagdag ng bagong method sa constructor ng object.

Kailangan magdagdag ng mga method sa loob ng constructor function:

mga halimbawa

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;
    };
}

Ang function na changeName ay nag-aasign sa name sa attribute na lastName ng person.

Ngayon ay maaari mong subukan:}

myMother.changeName("Jobs");

亲自试一试

sa pamamagitan ng paggamit ng myMother pamalit this,maaaring malaman ng JavaScript kung sino ang kasalukuyang pinagtratrabaho ang person.

Mga nakalimbagang JavaScript constructor

Ang JavaScript ay nagbibigay ng mga constructor para sa mga orihinal na obhektong:

mga halimbawa

var x1 = new Object();    // Isang bagong obhektong Object
var x2 = new String();    // Isang bagong obhektong String
var x3 = new Number();    // Isang bagong obhektong Number
var x4 = new Boolean();   // Isang bagong obhektong Boolean
var x5 = new Array();     // Isang bagong obhektong Array
var x6 = new RegExp();    // Isang bagong obhektong RegExp
var x7 = new Function();  // Isang bagong obhektong Function
var x8 = new Date();      // Isang bagong obhektong Date

亲自试一试

Math() Ang mga obhektong ito ay hindi kasali. Ang Math ay global na obhektong.new Ang mga keyword ay hindi magamit sa Math.

Alam mo ba?

Tulad ng nakita natin sa itaas, ang JavaScript ay nagbibigay ng mga orihinal na object na string, number at boolean. Subalit walang dahilan na gumawa ng mas kumplikadong obhektong. Ang mga orihinal na halaga ay mas mabilis!

Paggamit ng object literal {} pamalit new Object()

Paggamit ng string literal "" pamalit new String()

Paggamit ng number literal Number()

Paggamit ng boolean literal new Boolean()

Paggamit ng array literal [] pamalit new Array()

Paggamit ng pattern literal new RexExp()

Paggamit ng function expression () {} pamalit new Function()

mga halimbawa

var x1 = {};            // Bagong obhektong object
var x2 = "";            // Bagong orihinal na string na halaga
var x3 = 0;             // Bagong orihinal na numerong halaga
var x4 = false;         // Bagong orihinal na logikong halaga
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 逻辑这一章中学习为何不应该把逻辑值创建为对象。