最新的Web开发教程
 

JavaScript对象


JavaScript对象

在JavaScript中,对象是国王。 如果你理解了对象,你懂的JavaScript。

在JavaScript中,几乎“一切”是一个对象。

  • Booleans可以是对象(或对象处理的原始数据)
  • Numbers可以是对象(或对象处理的原始数据)
  • Strings可以是对象(或作为对象处理原始数据)
  • Dates总是对象
  • Maths总是对象
  • Regular表达式总是对象
  • Arrays总是对象
  • Functions总是对象
  • Objects是对象

在JavaScript中,所有值,除了原始的价值观,是对象。

原始值是:字符串("John Doe")数字(3.14), true, false, nullundefined


对象是包含变量变量

JavaScript的变量可以包含单个值:

var person = "John Doe";
试一试»

对象是变量太多。 但是,对象可以包含许多值。

这些值写为名称:值对(名称和冒号分隔值)。

var person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};
试一试»

JavaScript对象是一个名为值的集合


对象属性

命名值,在JavaScript对象,被称为属性

属性
firstName John
lastName Doe
age 50
eyeColor blue

写为名称值对的对象是类似于:

  • 在PHP关联数组
  • 在Python字典
  • 用C哈希表
  • 在Java中哈希映射
  • 在哈希Ruby和Perl

对象的方法

方法是,可以在对象上执行的动作

对象属性既可以是原始值,其他对象和函数。

对象方法是包含一个函数定义的对象属性。

属性
firstName John
lastName Doe
age 50
eyeColor blue
fullName function() {return this.firstName + " " + this.lastName;}

JavaScript对象是命名的值,被称为属性和方法的容器。

您将了解更多关于在下一章方法。


创建JavaScript对象

使用JavaScript,您可以定义和创建自己的对象。

有不同的方式来创建新的对象:

  • 定义和创建一个对象,使用对象文本。
  • 定义和创建一个对象,用关键字new。
  • 定义对象的构造函数,然后创建构造类型的对象。

在的ECMAScript 5中,对象也可以与该函数创建Object.create()


使用对象文本

这是创建一个JavaScript对象的最简单方法。

使用对象文本,你俩定义并在一条语句创建一个对象。

一个对象文字是名称的列表:值对(如age:50 )花括号内{}

下面的示例创建四个属性的新JavaScript对象:

var person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};
试一试»

空格和换行并不重要。 对象定义可以跨越多行:

var person = {
    firstName:"John",
    lastName:"Doe",
    age:50,
    eyeColor:"blue"
};
试一试»

使用JavaScript的新关键字

下面的例子还创建有四个属性的新JavaScript对象:

var person = new Object();
person.firstName = "John";
person.lastName = "Doe";
person.age = 50;
person.eyeColor = "blue";
试一试»

上面两个例子做同样的。 没有必要用new Object()
为简单起见,可读性和执行速度,使用第一个(对象字面方法)。


使用对象构造函数

上面的例子是在许多情况下的限制。 他们只能创建一个对象。

有时候,我们希望有可用于创建一种类型的许多对象“对象类型”。

创建“对象类型”的标准方法是使用一个对象的构造函数:

function person(first, last, age, eye) {
    this.firstName = first;
    this.lastName = last;
    this.age = age;
    this.eyeColor = eye;
}
var myFather = new person("John", "Doe", 50, "blue");
var myMother = new person("Sally", "Rally", 48, "green");
试一试»

上述功能(人)是一个对象的构造函数。

一旦你有一个对象的构造函数,可以创建同一类型的新对象:

var myFather = new person("John", "Doe", 50, "blue");
var myMother = new person("Sally", "Rally", 48, "green");

this关键字

在JavaScript中,所谓的东西this是“拥有”的JavaScript代码的对象。

的值this ,在一个功能中使用时,是“拥有”的功能的对象。

的值this ,在一个对象中使用时,是对象本身。

this关键字在对象的构造不具有价值。 它仅用于新对象的替代品。

this将成为新的对象的时候,构造函数用于创建一个对象。

注意, 不是一个变量。 它是一个关键字。 你不能改变的值this


内置的JavaScript构造

JavaScript有本地对象内置的构造函数:

var x1 = new Object();    // A new Object object
var x2 = new String();    // A new String object
var x3 = new Number();    // A new Number object
var x4 = new Boolean()    // A new Boolean object
var x5 = new Array();     // A new Array object
var x6 = new RegExp();    // A new RegExp object
var x7 = new Function();  // A new Function object
var x8 = new Date();      // A new Date object
试一试»

Math()对象不是在列表中。 数学是一个全局对象。 新的关键字不能在数学中使用。

你知道吗?

正如你所看到的,JavaScript有对象的基本数据类型字符串,数字,和布尔的版本。

没有任何理由来创建复杂的对象。 原始值执行快得多。

而且也没有理由使用新Array() 使用数组常量来代替: []

而且也没有理由使用新RegExp() 使用模式,而不是文字: /()/

而且也没有理由使用新Function() 使用函数表达式来代替: function () {}

而且也没有理由使用new Object() 使用对象文本来代替: {}

var x1 = {};            // new object
var x2 = "";            // new primitive string
var x3 = 0;             // new primitive number
var x4 = false;         // new primitive boolean
var x5 = [];            // new array object
var x6 = /()/           // new regexp object
var x7 = function(){};  // new function object
试一试»

JavaScript的对象是可变

对象是可变的:它们都通过引用解决,而不是价值。

如果y是一个对象,下面的语句不会产生y的副本:

var x = y;  // This will not create a copy of y.

对象x不是y的副本 。 这 y。 x和y指向同一个对象。

到y的任何改变也将发生变化的x,由于x和y是相同的对象。

var person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"}

var x = person;
x.age = 10;           // This will change both x.age and person.age
试一试»