js对象 学习笔记(1)

对象

  • 在 JavaScript 中,几乎“所有事物”都是对象。所有 JavaScript 值,除了原始值,都是对象。
  • 布尔是对象(如果用 new 关键词定义)
  • 数字是对象(如果用 new 关键词定义)
  • 字符串是对象(如果用 new 关键词定义)
  • 日期永远都是对象
  • 算术永远都是对象
  • 正则表达式永远都是对象
  • 数组永远都是对象
  • 函数永远都是对象
  • 对象永远都是对象

原始值

  • 原始值指的是没有属性或方法的值
  • 原始数据类型指的是拥有原始值的数据。
  • JavaScript 定义了 5 种原始数据类型:
  1. string
  2. number
  3. boolean
  4. null
  5. undefined
  • 原始值是一成不变的(它们是硬编码的,因此不能改变)。
  • 假设 x = 3.14,您能够改变 x 的值。但是您无法改变 3.14 的值。

对象定义

  • 对象是包含变量的变量
  • JavaScript 对象是命名值集合
  • 对象也是变量。但是对象能够包含很多值
  • 按照名称 : 值对的形式编写(名称和值以冒号分隔)。
    1
    var person = {firstName:"Bill", lastName:"Gates", age:62, eyeColor:"blue"};

对象属性

  • 属性指的是与 JavaScript 对象相关的值。
  • JavaScript 对象是无序属性的集合。
  • 属性通常可以被修改、添加和删除,但是某些属性是只读的。
  • firstName、lastName、age、eyeColor就是属性。

访问对象属性的两种方法

JavaScript for…in 循环

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

1
2
3
for (variable in object) {
要执行的代码
}

for…in 循环中的代码块会为每个属性执行一次

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<body>

<h1>JavaScript 对象属性</h1>

<p id="demo"></p>

<script>
var txt = "";
var person = {fname:"Bill", lname:"Gates", age:62};
var x;
for (x in person) {
txt += person[x] + " ";
}
document.getElementById("demo").innerHTML = txt;
</script>

</body>

添加新属性

  • 可以通过简单的赋值,向已存在的对象添加新属性。
  • 不能使用预留词作为属性名(或方法名)。请使用 JavaScript 命名规则。
    1
    person.nationality = "English";
    完整例子

删除属性

  • delete 关键词同时删除属性的值和属性本身
  • 删除完成后,属性在被添加回来之前是无法使用的。
  • delete 操作符被设计用于对象属性。它对变量或函数没有影响
  • delete 操作符不应被用于预定义的 JavaScript 对象属性。这样做会使应用程序崩溃。
    1
    2
    var person = {firstName:"Bill", lastName:"Gates", age:62, eyeColor:"blue"};
    delete person.age; //delete person["age"];
    完整例子
  • JavaScript 对象继承了它们的原型的属性。
  • delete 关键词不会删除被继承的属性,但是如果您删除了某个原型属性,则将影响到所有从原型继承的对象。

对象方法

  • 方法是可以在对象上执行的动作
  • 对象属性可以是原始值、其他对象以及函数。
  • 对象方法包含函数定义对象属性
属性
firstName Bill
fullName function() {return this.firstName + “ “ + this.lastName;}

this 关键词

  • 在 JavaScript 中,被称为 this 的事物,指的是拥有该 JavaScript 代码的对象。
  • this 的值,在函数中使用时,是“拥有”该函数的对象
  • 请注意 this 并非变量。它是关键词。您无法改变 this 的值。

创建与访问对象方法

  • 创建对象方法:
    1
    methodName : function() { 代码行 }
  • 访问对象方法:
    1
    objectName.methodName()
  • 此例访问 person 对象的 fullName() 方法:例子
  • 如果访问 fullName 属性时没有使用 (),则将返回函数定义:例子

使用内建方法

  • 此例使用 String 对象的 toUpperCase() 方法,把文本转换为大写:
    1
    2
    var message = "Hello world!";
    var x = message.toUpperCase();
    x 的值,在以上代码执行后将是:
    1
    HELLO WORLD!

添加新的方法

向对象添加方法是在构造器函数内部完成的:(更多相关知识在js对象 学习笔记(2)中的“JavaScript 对象构造器”内)

1
2
3
4
5
6
7
8
9
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 属性。

1
myMother.changeName("Jobs");
  • 完整例子
  • 通过用 myMother “替代” this。
  • this 的值,在对象中使用时,就是对象本身。
  • 构造器函数中,this 是没有值的。它是新对象的替代物。 当一个新对象被创建时,this 的值会成为这个新对象