菜鸟教程 之 JavaScript 高级教程

From:https://www.runoob.com/js/js-objects.html JavaScript对象 JavaScript 中的所有事物都是对象:字符串、数值、数组、函数... ( 即 JavaScript 一切皆 对象) 此外,JavaScript 允许自定义对象。 一切皆 对象 JavaScript 提供多个内建对象,比...
摘要由CSDN通过智能技术生成

From:https://www.runoob.com/js/js-objects.html

JavaScript 对象

JavaScript 中的所有事物都是对象:字符串、数值、数组、函数... ( 即 JavaScript 一切皆 对象)

此外,JavaScript 允许自定义对象。

一切皆 对象

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

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

对象

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

访问对象的属性

属性是与对象相关的值。

访问对象属性的语法是:objectName.propertyName

示例代码:

var tempObj = {
    'name': 'king',
    'age': 100,
    getName: function () {
        return this.name;
    },
    // getAge : () => { return this.age; }  // 箭头函数 不能作为 对象的方法
    getAge: function () {
        return this.age;
    }
};

console.log(tempObj.name);
console.log(tempObj.age);
console.log("***********************************");
console.log(tempObj.getName());
console.log(tempObj.getAge());

示例:使用了 String 对象的 length 属性来获得字符串的长度:

var message = "Hello World!";
var x = message.length;
// 在以上代码执行后,x 的值将是: 12

访问对象的方法

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

可以通过以下语法来调用方法:objectName.methodName()

示例:使用 String 对象的 toUpperCase() 方法来将文本转换为大写:

var message = "Hello world!";
var x = message.toUpperCase();
// 在以上代码执行后,x 的值将是:HELLO WORLD!

创建 JavaScript 对象

通过 JavaScript,您能够定义并创建自己的对象。

创建新对象有两种不同的方法:

  • 使用 Object 定义并创建对象的实例。
  • 使用 字典 创建对象
  • 使用函数来定义对象,然后创建新的对象实例。

使用 Object 创建对象

在 JavaScript 中,几乎所有的对象都是 Object 类型的实例,它们都会从 Object.prototype 继承属性和方法。

Object 构造函数创建一个对象包装器。

Object 构造函数,会根据给定的参数创建对象,具体有以下情况:

  • 如果给定值是 null 或 undefined,将会创建并返回一个空对象。
  • 如果传进去的是一个基本类型的值,则会构造其包装类型的对象。
  • 如果传进去的是引用类型的值,仍然会返回这个值,经他们复制的变量保有和源对象相同的引用地址。
  • 当以非构造函数形式被调用时,Object 的行为等同于 new Object()。

语法格式:

// 以构造函数形式来调用
new Object([value])

vaule 可以是任何值。

以下实例使用 Object 生成布尔对象:

// 等价于 o = new Boolean(true);
var o = new Object(true);

这个例子创建了对象的一个新实例,并向其添加了5个属性( 包含一个 方法 ):

person = new Object();
person.firstname = "John";
person.lastname = "Doe";
person.age = 50;
person.eyecolor = "blue";

person.getAge = function () { return this.age; }

console.log(person.getAge());

使用 字典 (键值对)来创建对象

也可以使用对象字面量来创建对象,语法格式如下:

{ name1 : value1, name2 : value2,...nameN : valueN }

其实就是大括号里面创建 name:value 对,然后 name:value 对之间以逗号 , 隔开。

person = {firstname: "John", lastname: "Doe", age: 50, eyecolor: "blue"};

JavaScript 对象就是一个 name:value 集合。

使用 对象构造器 创建对象

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

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

temp_person =new person("John","Doe",50,"blue");
console.log(temp_person.firstname)

在JavaScript中,this 通常指向的是我们正在执行的函数本身,或者是指向该函数所属的对象(运行时)

创建 对象实例

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

temp_person = new person("John","Doe",50,"blue");

对象 动态 添加属性

您可以通过为对象赋值,向已有对象添加新属性:

假设 person 对象已存在, 你可以为其添加这些新属性:firstname、lastname、age 以及 eyecolor:

person.firstname = "John";
person.lastname = "Doe";
person.age = 30;
person.eyecolor = "blue";

// x 的值将是:John
x = person.firstname;

对象 动态 添加方法

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

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

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

temp_person = new person("Sally", "Rally", 48, "green");
temp_person.changeName("Doe");
console.log(temp_person.lastname);

changeName() 函数 name 的值赋给 person 的 lastname 属性。

JavaScript 类

JavaScript 是面向对象的语言,但 JavaScript 不使用类。

在 JavaScript 中,不会创建类,也不会通过类来创建对象(就像在其他面向对象的语言中那样)。

JavaScript 基于 prototype而不是基于类的。

for...in 循环

JavaScript 中的 for...in 语句循环遍历对象的属性。( 只能 遍历对象的属性 )

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

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

循环遍历对象的属性:

function myFunction() {
    var x;
    var txt = "";
    var person = {fname: "Bill", lname: "Gates", age: 56};
    for (x in person) {
        txt = txt + person[x];
    }
    console.log(txt);
}
myFunction();

JavaScript 的对象是可变的

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

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

var x = person;  // 不会创建 person 的副本,是引用

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

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

var x = person;
x.age = 10;  //  x.age 和 person.age 都会改变

prototype(原型对象)

  • JavaScript 是面向对象的语言,但 JavaScript 不使用类。
  • 在 JavaScript 中,不会创建类,也不会通过类来创建对象(就像在其他面向对象的语言中那样)。
  • JavaScript 基于 prototype,而不是基于类的。

所有的 JavaScript 对象都会从一个 prototype(原型对象)中继承属性和方法。

在前面的章节中我们学会了如何使用对象的构造器(constructor):

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值