學會用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/zh-hant/n/351781.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
EEPRI的頭像EEPRI
上一篇 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

發表回復

登錄後才能評論