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 逻辑这一章中学习为何不应该把逻辑值创建为对象。