小码哥的IT人生

JavaScript 对象

JavaScript基础 2022-04-24 02:11:25小码哥的IT人生shichen

JavaScript 对象

真实生活中的对象、属性和方法

在真实生活中,汽车是一个对象

汽车有诸如车重和颜色等属性,也有诸如启动和停止的方法

对象 属性 方法
 

car.name = porsche

car.model = 911

car.length = 4499mm

car.color = white

car.start()

car.drive()

car.brake()

car.stop()

所有汽车都拥有同样的属性,但属性值因车而异。

所有汽车都拥有相同的方法,但是方法会在不同时间被执行。

JavaScript 对象

您之前已经学到,JavaScript 变量是数据值的容器。

这段代码把一个单一值(porsche)赋给名为 car 的变量

var car = "porsche";

完整实例:

<!DOCTYPE html>
<html>
<body>
<h2>JavaScript 变量</h2>
<p id="demo"></p>
<script>
// 创建并显示变量:
var car = "porsche";
document.getElementById("demo").innerHTML = car;
</script>
</body>
</html>

运行结果:

Javascript 变量

porsche

对象也是变量。但是对象包含很多值。

这段代码把多个值(porsche, 911, white)赋给名为 car 的变量

var car = {type:"porsche", model:"911", color:"white"};

完整实例:

<!DOCTYPE html>
<html>
<body>
<h1>JavaScript 对象</h1>
<p id="demo"></p>
<script>
// 创建对象:
var car = {type:"porsche", model:"911", color:"white"};
// 显示对象中的数据:
document.getElementById("demo").innerHTML = car.type;
</script>
</body>
</html>

运行结果:

Javascript 对象

porsche

值以名称:值对的方式来书写(名称和值由冒号分隔)。

JavaScript 对象是被命名值的容器。

对象属性

(JavaScript 对象中的)名称:值对被称为属性

var person = {firstName:"Bill", lastName:"Gates", age:62, eyeColor:"blue"};
属性 属性值
firstName Bill
lastName Gates
age 62
eyeColor blue

对象方法

对象也可以有方法

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

方法以函数定义被存储在属性中。

属性 属性值
firstName Bill
lastName Gates
age 62
eyeColor blue
fullName function() {return this.firstName + " " + this.lastName;}

方法是作为属性来存储的函数。

实例

var person = {
  firstName: "Bill",
  lastName : "Gates",
  id       : 678,
  fullName : function() {
    return this.firstName + " " + this.lastName;
  }
};

this 关键词

在函数定义中,this 引用该函数的“拥有者”。

在上面的例子中,this 指的是“拥有” fullName 函数的 person 对象

换言之,this.firstName 的意思是 this 对象的 firstName 属性。

请在 JS this 关键词这一章学习更多有关 this 关键词的知识。

对象定义

我们定义(创建)了一个 JavaScript 对象:

示例代码:

var person = {firstName:"Bill", lastName:"Gates", age:62, eyeColor:"blue"};

完整实例:

<!DOCTYPE html>
<html>
<body>
<h1>JavaScript 对象创建</h1>
<p id="demo"></p>
<script>
// 创建对象:
var person = {firstName:"Bill", lastName:"Gates", age:62, eyeColor:"blue"};
// 显示对象中的数据:
document.getElementById("demo").innerHTML =
person.firstName + " 已经 " + person.age + " 岁了。";
</script>
</body>
</html>

运行结果:

Javascript 对象创建

Bill 已经 62 岁了。

空格和折行都是允许的。对象定义可横跨多行:

示例代码:

var person = {
    firstName:"Bill",
    lastName:"Gates",
    age:50,
    eyeColor:"blue"
};

完整实例:

<!DOCTYPE html>
<html>
<body>
<h1>JavaScript 对象创建</h1>
<p id="demo"></p>
<script>
// 创建对象:
var person = {
    firstName : "Bill",
    lastName  : "Gates",
    age       : 62,
    eyeColor  : "blue"
};
// 显示对象中的数据:
document.getElementById("demo").innerHTML =
person.firstName + " 已经 " + person.age + " 岁了。";
</script>
</body>
</html>

运行结果:

Javascript 对象创建

Bill 已经 62 岁了。

访问对象属性

您能够以两种方式访问属性:

objectName.propertyName

或者

objectName["propertyName"]

例子 1

person.lastName;

完整实例:

<!DOCTYPE html>
<html>
<body>
<h1>JavaScript 对象属性</h1>
<p>有两种不同的方法来访问对象属性。</p>
<p>您可以使用 person.property 或 person["property"]。</p>
<p id="demo"></p>
<script>
// 创建对象:
var person = {
    firstName: "Bill",
    lastName : "Gates",
    id       :  12345
};
// 显示对象中的数据:
document.getElementById("demo").innerHTML =
person.firstName + " " + person.lastName;
</script>
</body>
</html>

运行结果:

Javascript 对象属性

有两种不同的方法来访问对象属性。

您可以使用 person.property 或 person["property"]。

Bill Gates

例子 2

person["lastName"];

完整实例:

<!DOCTYPE html>
<html>
<body>
<h1>JavaScript 对象属性</h1>
<p>有两种不同的方法来访问对象属性。</p>
<p>您可以使用 person.property 或 person["property"]。</p>
<p id="demo"></p>
<script>
// 创建对象:
var person = {
    firstName: "Bill",
    lastName : "Gates",
    id       :  12345
};
// 显示对象中的数据:
document.getElementById("demo").innerHTML =
person["firstName"] + " " + person["lastName"];
</script>
</body>
</html>

运行结果:

Javascript 对象属性

有两种不同的方法来访问对象属性。

您可以使用 person.property 或 person["property"]。

Bill Gates

访问对象方法

您能够通过如下语法访问对象方法:

objectName.methodName()

示例代码:

name = person.fullName();

完整实例:

<!DOCTYPE html>
<html>
<body>
<h1>JavaScript 对象方法</h1>
<p>对象方法是一种函数定义,存储为属性值。</p>
<p id="demo"></p>
<script>
// 创建对象:
var person = {
    firstName: "Bill",
    lastName : "Gates",
    id       : 12345,
    fullName : function() {
       return this.firstName + " " + this.lastName;
    }
};
// 显示对象中的数据:
document.getElementById("demo").innerHTML = person.fullName();
</script>
</body>
</html>

运行结果:

Javascript 对象方法

对象方法是一种函数定义,存储为属性值。

Bill Gates

如果您不使用 () 访问 fullName 方法,则将返回函数定义

示例代码:

name = person.fullName;

完整实例:

<!DOCTYPE html>
<html>
<body>
<h1>JavaScript 对象方法</h1>
<p>如果您不使用 () 访问对象,则返回函数定义:</p>
<p id="demo"></p>
<script>
// 创建对象:
var person = {
    firstName: "Bill",
    lastName : "Gates",
    id       : 12345,
    fullName : function() {
       return this.firstName + " " + this.lastName;
    }
};
// 显示对象中的数据:
document.getElementById("demo").innerHTML = person.fullName;
</script>
</body>
</html>

运行结果:

Javascript 对象方法

如果您不使用 () 访问对象,则返回函数定义:

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

方法实际上是以属性值的形式存储的函数定义。

请不要把字符串、数值和布尔值声明为对象!

如果通过关键词 "new" 来声明 JavaScript 变量,则该变量会被创建为对象:

var x = new String();        // 把 x 声明为 String 对象
var y = new Number();        // 把 y 声明为 Number 对象
var z = new Boolean();       //	把 z 声明为 Boolean 对象

请避免字符串、数值或逻辑对象。他们会增加代码的复杂性并降低执行速度。

您将在本教程的稍后章节学到更多有关对象的知识。

可以使用本站在线JavaScript测试工具测试上述代码运行效果:http://www.phpcodeweb.com/runjs.html

课外扩展

如需更多有关 JavaScript 对象的知识,请阅读 JavaScript 高级教程中的相关内容:

ECMAScript 面向对象技术
本节简要介绍了面向对象技术的术语、面向对象语言的要求以及对象的构成。
ECMAScript 对象应用
本节讲解了如何声明和实例化对象,如何引用和废除对象,以及绑定的概念。
ECMAScript 对象类型
本节介绍了 ECMAScript 的三种类型:本地对象、内置对象和宿主对象,并提供了指向相关参考手册的链接。
ECMAScript 对象作用域
本节讲解了 ECMAScript 作用域以及 this 关键字。
ECMAScript 定义类或对象
本节详细讲解了创建 ECMAScript 对象或类的各种方式。
ECMAScript 修改对象
本节讲解了如何通过创建新方法或重定义已有方法来修改对象。

版权所有 © 小码哥的IT人生
Copyright © phpcodeweb All Rights Reserved
ICP备案号:苏ICP备17019232号-2  

苏公网安备 32030202000762号

© 2021-2024