JavaScript 对象构造函数
-
JavaScript对象构造函数
前几章的例子有限。它们只创建单个对象。有时我们需要一个“ 蓝图 ”来创建相同“类型”的许多对象。创建“对象类型”的方法是使用对象构造函数。在上面的示例中,function Person()是一个对象构造函数。通过使用new关键字调用构造函数来创建相同类型的对象:
尝试一下var myFather = new Person("John", "Doe", 50, "blue"); var myMother = new Person("Sally", "Rally", 48, "green");
-
this关键字
在JavaScript中,调用的this是“拥有”代码的对象。this在对象中使用时,值是对象本身。在构造函数this中没有值。它是新对象的替代品。this创建新对象时,将成为新对象的值。请注意,这this不是变量。这是一个关键字。你无法改变this的值。
-
向对象添加属性
将新属性添加到现有对象很容易:
尝试一下myFather.nationality = "English";
该属性将添加到myFather。不是我myMother。(不是任何其他人的对象)。 -
向对象添加方法
向现有对象添加新方法很简单:
尝试一下myFather.name = function () { return this.firstName + " " + this.lastName; };
该方法将添加到myFather。不是我myMother。(不是任何其他人的对象)。 -
-
将方法添加到构造函数
您的构造函数也可以定义方法:
尝试一下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的lastName属性。现在你可以尝试:
尝试一下myMother.changeName("Doe");
-
内置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是一个全全局的对象。Math无法使用new关键字 。 -
你知道吗?
正如你可以在上面看到,JavaScript有对象的基本数据类型的String,Number以及Boolean。但没有理由创建复杂的对象。原始值要快得多。使用对象文字{}而不是new Object()。使用字符串文字""而不是new String()。使用数字文字12345而不是new Number()。使用布尔文字true / false而不是new Boolean()。使用数组文字[]而不是new Array()。使用模式文字/()/而不是new RegExp()。使用函数表达式() {}代替new Function()。
尝试一下var x1 = {}; // 新对象 var x2 = ""; // 新的原始字符串 var x3 = 0; // 新的原始数字 var x4 = false; // 新的原始布尔值 var x5 = []; // 新的数组对象 var x6 = /()/ // 新的正则表达式对象 var x7 = function(){}; // 新功能对象
-
new创建基本类型对象方法
字符串对象
通常,字符串被创建为基元: var firstName = "John", 但是也可以使用new关键字将字符串创建为对象:var firstName = new String("John"),在JavaScript字符串章节中了解为什么不应将字符串创建为对象 。数字对象
通常,数字被创建为基元: var x = 123,但是也可以使用new关键字将数字创建为对象:var x = new Number(123),了解为什么不应在JavaScript数字章节中将数字创建为对象 。布尔对象
通常,布尔值被创建为基元: var x = false,但是布尔值也可以使用new关键字创建为对象:var x = new Boolean(false),在JavaScript布尔一章中了解为什么不应该将布尔值创建为对象 。