学会用JavaScript创建新对象的步骤

一、JS对象的基本概念和创建方法

在JavaScript中,对象是一种复合数据类型,它可以存储多个不同数据类型的值,是一个无序的属性集合。在JS中,对象由“属性”和“方法”组成。属性可以是基本数据类型、对象或数组,而方法则是一个函数。在JS中,对象是一个动态的实体,可以随时添加、删除和修改原有属性。创建对象有以下几种方法:

1.通过字面量创建

var obj = {
    name: "xiaoming",
    age: 18,
    sayHi: function(){
        console.log("Hi, I am " + this.name + ", I am " + this.age + " years old.");
    }
};

2.通过Object构造函数创建

var obj = new Object();
obj.name = "xiaoming";
obj.age = 18;
obj.sayHi = function(){
    console.log("Hi, I am " + this.name + ", I am " + this.age + " years old.");
}

3.通过构造函数创建

function Person(name, age){
    this.name = name;
    this.age = age;
    this.sayHi = function(){
        console.log("Hi, I am " + this.name + ", I am " + this.age + " years old.");
    }
}
var obj = new Person("xiaoming", 18);

二、JS原型与原型链

每个对象都有一个原型对象,它是一个指向另一个对象的引用。这个对象被称为原型对象。当读取一个对象的属性时,如果这个对象本身没有这个属性,那么就会去它的原型对象中查找。如果原型对象中也没有这个属性,就会去原型对象的原型对象中查找,直到找到 Object.prototype 为止,这样就形成了一个链式结构,叫做原型链。

每个函数都有一个 prototype 属性,它指向一个对象,这个对象就是该构造函数的原型对象。当通过构造函数创建一个新对象时,这个新对象会从它的构造函数的原型对象中继承属性和方法。原型链的概念让我们可以复用已有对象的属性和方法,提高了代码的复用率。

示例:

function Person(name, age){
    this.name = name;
    this.age = age;
}
Person.prototype.sayHi = function(){
    console.log("Hi, I am " + this.name + ", I am " + this.age + " years old.");
}
var obj = new Person("xiaoming", 18);

三、JS继承的实现

在JS中,继承的实现有以下几种方式:

1.原型链继承

原型链继承主要是通过修改子类的原型指向父类的实例,来实现子类继承父类的属性和方法。

function Animal(){
    this.type = "animal";
}
Animal.prototype.eat = function(){
    console.log("I am eating...");
}
function Cat(){}
Cat.prototype = new Animal();
var cat = new Cat();

2.构造函数继承

构造函数继承主要是通过在子类的构造函数中调用父类的构造函数,来实现子类具有父类的属性和方法。

function Animal(type){
    this.type = type;
}
function Cat(){
    Animal.call(this, "cat");
}
var cat = new Cat();

3.组合继承

组合继承主要是通过用原型链继承父类的方法与构造函数继承父类的属性相结合,来实现子类既具有父类的属性又具有父类的方法。

function Animal(type){
    this.type = type;
}
Animal.prototype.eat = function(){
    console.log("I am eating...");
}
function Cat(type){
    Animal.call(this, type);
}
Cat.prototype = new Animal();
Cat.prototype.constructor = Cat;

四、JS对象的特殊对象和类型判断方法

在JS中,有些对象是特殊对象,如:Object、Function、Array、Date、RegExp等。这些特殊对象都有自己特殊的属性和方法,我们可以通过 typeof 判断对象的类型。

typeof 返回一个表示数据类型的字符串,它是一个运算符而不是函数。它只有一个操作数,该操作数可以是任意类型,它返回的结果是表示操作数类型的一个字符串。常用的数据类型有:undefined、number、string、object、function、boolean。

var a = 123;
console.log(typeof a); //"number"

另外,JS中还有 instanceof 和 Object.prototype.toString.call() 两种类型判断方法。

instanceof 运算符用于判断一个对象是否是一个类的实例。它的原理是通过判断对象的原型链中是否有这个构造函数的 prototype 对象。

function Person(){}
var person = new Person();
console.log(person instanceof Person); //true
console.log(person instanceof Object); //true

Object.prototype.toString.call() 可以获取一个对象的字符串类型。它的原理是返回了对象类型的标准字符串表示。在进行类型转换判断时,它相对于 typeof 更加准确。

var a = 123;
console.log(Object.prototype.toString.call(a)); //"[object Number]"

原创文章,作者:EEPRI,如若转载,请注明出处:https://www.506064.com/n/351781.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
EEPRIEEPRI
上一篇 2025-02-17 17:02
下一篇 2025-02-17 17:02

相关推荐

  • Python初学者指南:第一个Python程序安装步骤

    在本篇指南中,我们将通过以下方式来详细讲解第一个Python程序安装步骤: Python的安装和环境配置 在命令行中编写和运行第一个Python程序 使用IDE编写和运行第一个Py…

    编程 2025-04-29
  • 面向对象编程、类和对象

    面向对象编程(Object-Oriented Programming, OOP)是一种编程方法,它将现实世界中的事物抽象为对象(Object),对象的属性和方法被封装成类(Clas…

    编程 2025-04-29
  • 正五边形画法步骤图解

    正五边形是一种经典的几何图形,其独特的构造方式给它带来了无限的美感和艺术价值。本篇文章将从多个方面详细阐述正五边形的画法步骤图解,帮助您轻松get到绘制正五边形的窍门。 一、构造正…

    编程 2025-04-29
  • 使用Python图书馆抢座脚本的完整步骤

    本文将从多个方面详细介绍如何使用Python编写图书馆的座位抢占脚本,并帮助您快速了解如何自动抢占图书馆的座位,并实现您的学习计划。 一、开发环境搭建 首先,我们需要安装Pytho…

    编程 2025-04-28
  • Mapster:一个高性能的对象映射库

    本文将深入介绍furion.extras.objectmapper.mapster,一个高性能的对象映射库,解释它是如何工作的以及如何在你的项目中使用它。 一、轻松地实现对象之间的…

    编程 2025-04-28
  • 使用JavaScript日期函数掌握时间

    在本文中,我们将深入探讨JavaScript日期函数,并且从多个视角介绍其应用方法和重要性。 一、日期的基本表示与获取 在JavaScript中,使用Date对象来表示日期和时间,…

    编程 2025-04-28
  • Python返回对象类型

    Python是一种动态、解释型、高级编程语言。Python是一种面向对象的语言,即所有的一切都是一个对象。 一、基本类型 Python中的基本类型有整数int、浮点数float、布…

    编程 2025-04-28
  • JavaScript中使用new Date转换为YYYYMMDD格式

    在JavaScript中,我们通常会使用Date对象来表示日期和时间。当我们需要在网站上显示日期时,很多情况下需要将Date对象转换成YYYYMMDD格式的字符串。下面我们来详细了…

    编程 2025-04-27
  • Python中通过对象不能调用类方法和静态方法的解析

    当我们在使用Python编写程序时,可能会遇到通过对象调用类方法和静态方法失败的问题,那么这是为什么呢?接下来,我们将从多个方面对这个问题进行详细解析。 一、类方法和静态方法的定义…

    编程 2025-04-27
  • Python内置函数——查看对象内存

    本文将介绍Python内置函数中,在开发中查看对象内存的相关函数。 一、id()函数 id()函数是Python内置函数,用于返回对象的唯一标识符,也就是对象在内存中的地址。 nu…

    编程 2025-04-27

发表回复

登录后才能评论