JavaScript-objektin rakentaja

实例

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

Kokeile itse

On hyvä tapa nimittää konstruktiorutiinit isolla alkukirjaimella.

Objektityyppi (kaava) (luokka)

Edellisessä luvussa esitetyt esimerkit ovat rajallisia. Ne luovat vain yhden objektin.

Joskus meidän täytyy luoda useita saman "tyypin" objekteja:kaava" on käyttää

Tapa luoda tietyn "tyypin" monien objektien "objektin konstruktiorutiini

Yllä olevassa esimerkissä,funktio Person() tämä on objektin konstruktiorutiini.

kautta new avainsanan kutsu konstruktiorutiinilla voi luoda samanlaista objektia:

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

Kokeile itse

this avainsanaksi

JavaScriptissä sitä kutsutaan this joiden asiat ovat koodin "omistajia".

this arvo, kun sitä käytetään objektissa, on itse objekti.

Konstruktorifunktiossa,this Se ei ole arvoa. Se on uuden olion korvikkeena. Kun uusi olio luodaan, this:n arvo tulee olemaan tämä uusi olio.

请注意 this 它并不是变量。它是关键词。您无法改变 this 的值。

为对象添加属性

为已有的对象添加新属性很简单:

实例

myFather.nationality = "English";

Kokeile itse

新属性被添加到 myFather。不是 myMother,也不是任何其他 person 对象。

为对象添加方法

为已有的对象添加新方法很简单:

实例

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

Kokeile itse

新方法被添加到 myFather。不是 myMother,也不是任何其他 person 对象。

为构造器添加属性

与向已有对象添加新属性不同,您无法为对象构造器添加新属性:

实例

Person.nationality = "English";

Kokeile itse

如需向构造器添加一个新属性,您必须添加到构造器函数:

实例

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

Kokeile itse

这样对象属性就可以拥有默认值。

为构造器添加方法

您的构造器函数也可以定义方法:

实例

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

Kokeile itse

与向已有对象添加新方法不同,您无法为对象构造器添加新方法。

必须在构造器函数内部向一个对象添加方法:

实例

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("Jobs");

Kokeile itse

通过用 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 对象

Kokeile itse

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 = [];            // Uusi taulukkoobjekti
var x6 = /()/           // Uusi säännöllinen lausekeobjekti
var x7 = function(){};  // Uusi funktioobjekti

Kokeile itse

字符串对象

Yleensä merkkijonot luodaan alkuperäisarvoiksi: var firstName = "Bill"

Mutta voit myös käyttää new Avainsanalla luodaan merkkijonoobjekti: var firstName = new String("Bill")

Ole hyvä ja JS-merkkijonoTässä luvussa opit, miksi ei pitäisi luoda merkkijonoja objekteiksi.

数字对象

Yleensä luvut luodaan alkuperäisarvoiksi: var x = 456

Mutta voit myös käyttää new Avainsanalla luodaan lukuobjekti: var x = new Number(456)

Ole hyvä ja JS-lukuTässä luvussa opit, miksi ei pitäisi luoda lukuja objekteiksi.

布尔对象

Yleensä loogiset arvot luodaan alkuperäisarvoiksi: var x = false

Mutta voit myös käyttää new Avainsanalla luodaan looginen objekti: var x = new Boolean(false)

Ole hyvä ja JS-looginenTässä luvussa opit, miksi ei pitäisi luoda loogisia arvoja objekteiksi.