Js 对象

Js 对象

JavaScript 对象

JavaScript 中的所有事物都是对象:字符串、数值、数组、函数…

JavaScript 提供多个内建对象,比如 String、Date、Array 等等。 对象只是带有属性和方法的特殊数据类型。

  • 布尔型可以是一个对象。
  • 数字型可以是一个对象。
  • 字符串也可以是一个对象
  • 日期是一个对象
  • 数学和正则表达式也是对象
  • 数组是一个对象
  • 甚至函数也可以是对象

JavaScript 对象

对象只是一种特殊的数据。对象拥有属性方法


访问对象的属性

属性是与对象相关的值。

访问对象属性的语法是:

objectName.propertyName

使用对象构造器(constructor)

本例使用函数来构造对象:

function person(firstname,lastname,age,eyecolor)
{    this.firstname=firstname;    					 this.lastname=lastname;   
	 this.age=age;    
	 this.eyecolor=eyecolor; 
}

创建 JavaScript 对象实例

一旦您有了对象构造器,就可以创建新的对象实例,就像这样:

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

把方法添加到 JavaScript 对象

方法只不过是附加在对象上的函数。

在构造器函数内部定义对象的方法:

function person(firstname,lastname,age,eyecolor)
{
    this.firstname=firstname;
    this.lastname=lastname;
    this.age=age;
    this.eyecolor=eyecolor;

    this.changeName=changeName;
    function changeName(name)
    {
        this.lastname=name;
    }
}

JavaScript for…in 循环

JavaScript for…in 语句循环遍历对象的属性。

语法

for (variable in object)
{
    执行的代码……
}

注意: for…in 循环中的代码块将针对每个属性执行一次。

JavaScript 的对象是可变的

对象是可变的,它们是通过引用来传递的。

以下实例的 person 对象不会创建副本:

如果修改 x ,person 的属性也会改变:

var person = {
    firstName:"John", 
    lastName:"Doe", 
    age:50, 
    eyeColor:"blue"
}  
var x = person; x.age = 10;  // 改变x的age属性值, x.age 和 person.age 都会改变

已存在构造器的对象中是不能添加新的属性,要添加一个新的属性需要在在构造器函数中添加。

添加属性和方法

有的时候我们想要在所有已经存在的对象添加新的属性或方法。

另外,有时候我们想要在对象的构造函数中添加属性或方法。

使用 prototype 属性就可以给对象的构造函数添加新的属性:

function Person(first, last, age, eyecolor) 
{  
    this.firstName = first;  
    this.lastName = last; 
    this.age = age;  
    this.eyeColor = eyecolor; 
}  
Person.prototype.nationality = "English";
var myfather=new Person("John", "Doe", 50, "blue");
console.log("My father's nationality"+myfather.nationality);

当然我们也可以使用 prototype 属性就可以给对象的构造函数添加新的方法:

function Person(first, last, age, eyecolor)
{  
    this.firstName = first;  
    this.lastName = last;  
    this.age = age;  
    this.eyeColor = eyecolor; 
}  
Person.prototype.name = function() { 
    return this.firstName + " " + this.lastName; 
};
var myfather1 = new Person("Tom", "Doe", 40, "black");
console.log(myfather1.name());