JavaScript 对象构造器
实例
function Person(first, last, age, eye) { this.firstName = first; this.lastName = last; this.age = age; this.eyeColor = eye; }
Kwamfanin ƙirar nau'in da kei kai ƙirar farko a kai shine ƙa'idu wani.
Nau'in ƙungiyar (ƙarfin ƙirar nau'in) (ƙungiyar)
Maiƙanin ita ce ƙarfin na ƙarshe na babban ita. Suna ƙirar karkashin buƙatattun nau'in kanan kanan.
Kwamfanin a cikin wannan nau'in ƙungiyar na da karkashin buƙatattun nau'in da kei tsara shine:Ƙarfin ƙirar nau'in”
Shi ne hakanin ƙirar nau'in ƙungiyar da kei tsara ta hanyar:ƙungiyar ƙirar nau'in。
A cikin wasan kwaikwayo naƙungiyar Person() ƙungiyar ƙirar nau'in.
ta hanyar: new Kalaman ƙarfi an ƙirƙiri ƙungiyar nau'in gaba ɗaya:
var myFather = new Person("Bill", "Gates", 62, "blue"); var myMother = new Person("Steve", "Jobs", 56, "green");
this kalaman ƙarfi
A cikin JavaScript, ana kira: this
Anfiyayin wanda kei karewa shi ne farko na koda.
this
Ƙarfin, a cikin ƙungiyar, ita ce karkashin buƙatattun kaiyance.
A cikin kungiyar ƙirar nau'in.this
Yana ba koyi wani. Ita ce karkashin buƙatattun wanda kei tsara. Babban karo kamar yadda karkashin buƙatattun ya kei tsara, kuma yadda 'this' ya zama wanda kei tsara wannan karkashin buƙatattun.
请注意 this
并不是变量。它是关键词。您无法改变 this 的值。
为对象添加属性
为已有的对象添加新属性很简单:
实例
myFather.nationality = "English";
新属性被添加到 myFather。不是 myMother,也不是任何其他 person 对象。
为对象添加方法
为已有的对象添加新方法很简单:
实例
myFather.name = function () { return this.firstName + " " + this.lastName; };
新方法被添加到 myFather。不是 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() ƙanambu ƙarɗa name ƙaɗa ƙanamici ƙaɗa ƙaɗa person ƙaɗa lastName ƙaɗa ɗanamici.
现在您可以试一试:
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 逻辑这一章中学习为何不应该把逻辑值创建为对象。