如何理解JavaScript一切皆对象

"JavaScript一切皆对象"的说法,实际上是JavaScript编程语言的一个核心特性和设计理念。在JavaScript中,几乎所有的东西都可以被看作是一个对象,包括基本数据类型(如数字、字符串、布尔值)和复杂的数据结构(如数组、函数)等。

下面是关于这些概念的理解:

1,基本数据类型也是对象:在JavaScript中,基本数据类型如Number、String、Boolean都有对应的包装对象。当对这些基本数据类型的值调用方法时,JavaScript会自动将它们转换为对应的包装对象,然后调用该方法。例如,你可以对字符串使用toUpperCase()方法,尽管字符串本身并不是对象。

    //string类型
    let str = "Hello, World!";
    console.log(str.toUpperCase()); // 输出 "HELLO, WORLD!"
    console.log(str.substr(1,3))//ell
    //Number类型
    let num1 = 42;
    console.log(num1.toString()); // 输出 "42"
    //boolean类型
    let bool = true;
    console.log(bool.toString()); // 输出 "true"

其它上面第一个string类型的等于以下的写法,后面两个number类型和boolean类型的也一样

<script>
    let obj=new Object('Hello, World!')
    console.log(obj.toUpperCase())//HELLO, WORLD!
    console.log(obj.substr(1,3))//ell
</script>

2,函数也是对象:在JavaScript中,函数是一等公民,它们可以像其他任何值一样被传递和操作。函数在JavaScript中实际上是一种特殊的对象,它们有属性和方法,也可以被赋值给变量或作为参数传递给其他函数。

    function greet(name) {
        return `test, ${name}!`
    }
    // 函数作为对象,可以拥有属性
    greet.greeting = "Welcome";
    greet.age="100"
    console.log(greet.greeting); // Welcome
    console.log(greet.age)//100

    // 函数被赋值给变量
    let sayHello = greet;
    console.log(sayHello("JavaScript")) // 输出 test, JavaScript!

3,数组和对象:数组和对象在JavaScript中显然是对象。数组是带有数字索引的特殊对象,而普通的对象则是由键值对组成的。

    // 这里可以直接调用数组常用的方法push,pop,map等
    let arr = [1, 2, 3];
    arr.push(4); // 使用数组的方法
    console.log(arr); // 输出 [1, 2, 3, 4]

    // 对象作为对象
    let obj = {
        name: "李四",
        age: 30,
        greet: function() {
            console.log(`我叫 ${this.name}`);
        }
    };
    obj.greet(); // 调用对象的方法
    console.log(obj.name,obj.age); //李四 30

4,原型链和继承:JavaScript使用原型链来实现继承。每个对象都有一个指向它的原型(prototype)的链接,而原型本身也是一个对象,也可以有自己的原型。这样,就形成了一个原型链。当试图访问一个对象的属性时,如果对象本身没有这个属性,那么JavaScript会沿着原型链向上查找。

    // 创建一个构造函数
    function Person(name) {
        this.name = name;
    }
    // 为Person的原型添加一个方法
    Person.prototype.greet = function() {
        console.log(`test ${this.name}`);
    };
    // 创建一个新的对象,继承自Person
    let alice = new Person("赵六");
    alice.greet(); // test 赵六

    // 对象的__proto__等于原型prototype
    console.log(alice.__proto__ === Person.prototype); // 输出 true

总结:javaScript除null和undefined以外都是以原型链的形式直接或间接继承自Object

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/450236.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

算法耗时通用优化技巧 总结

最近在部署AI相关的算法&#xff0c;并要求减少总耗时&#xff0c;从中总结出的一些比较通用的优化技巧。精髓总结一句话就是&#xff1a;在同一时间尽可能充分利用硬件资源。而怎么尽可能充分利用呢&#xff0c;方式就是多线程并行处理。 1、单线程串行处理数据 假设算法需要…

Linux入门基本指令(1)

✨前言✨ &#x1f4d8; 博客主页&#xff1a;to Keep博客主页 &#x1f646;欢迎关注&#xff0c;&#x1f44d;点赞&#xff0c;&#x1f4dd;留言评论 ⏳首发时间&#xff1a;2024年3月12日 &#x1f4e8; 博主码云地址&#xff1a;渣渣C &#x1f4d5;参考书籍&#xff1a;…

Java开发从入门到精通(一):Java的项目案例

Java大数据开发和安全开发 Java 案例练习案例一:买飞机票案例二:开发验证码案例三:评委打分案例四:数字加密案例五:数组拷贝案例六: 抢红包案例七:找素数案例八:模拟双色球[拓展案例] Java 案例练习 案例一:买飞机票 分析: 方法是需要接收数据?需要接收机票原价、当前月份、舱…

【更新】cyの破三之旅(20240313~20240421)

序言 在过去一个多月里&#xff0c;我又如期搞砸一些事。 有些事不去做会遗憾&#xff0c;做完也很自责。 经年如此&#xff0c;已经习惯了。 但是这次破三&#xff0c;我一定不会再搞砸了。&#xff08;FLAG已立&#xff0c;完篇收FLAG&#xff09; PS&#xff1a;真的勇…

opengl 学习(三)-----着色器

着色器 分类demo效果解析教程 分类 OPengl C demo #include "glad/glad.h" #include "glfw3.h" #include <iostream> #include <cmath> #include <vector>#include <string> #include <fstream> #include <sstream>…

【Python数据结构与判断3/7】储存多个数据的元组

目录 导入 数据结构 元组 索引 in运算 ​编辑 Debug 总结 导入 我们之前学习的变量可以存储1个数据&#xff0c;那当我们需要存储10个数据的时候该怎么办呢&#xff1f;写10个变量可以解决这个问题&#xff0c;但是太冗长。 数据结构 我们也可以如第2张图所示&#xff0…

Accelerating Performance of GPU-based Workloads Using CXL——论文泛读

FlexScience 2023 Paper CXL论文阅读笔记整理 问题 跨多GPU系统运行的高性能计算&#xff08;HPC&#xff09;工作负载&#xff0c;如科学模拟和深度学习&#xff0c;是内存和数据密集型的&#xff0c;依赖于主机内存来补充其有限的板载高带宽内存&#xff08;HBM&#xff09…

【代码随想录 | 数组 02】移除元素

文章目录 2.移除元素2.1题目2.1思路2.2.1暴力解法2.2.2双指针法 23总结 2.移除元素 27.移除元素_力扣链接 2.1题目 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。 不要使用额外的数组空间&am…

Kubernetes | 起源 | 组件详解

起源 起源&#xff1a; Kubernetes&#xff08;常简称为K8s&#xff09;起源于Google内部的Borg项目&#xff0c;是一个开源的容器编排引擎&#xff0c;于2014年首次对外发布。 Google Borg Google Borg 是 Google 内部开发和使用的大规模集群管理系统&#xff0c;用于管理和运…

Visual grounding-视觉定位任务介绍

&#x1f380;个人主页&#xff1a; https://zhangxiaoshu.blog.csdn.net &#x1f4e2;欢迎大家&#xff1a;关注&#x1f50d;点赞&#x1f44d;评论&#x1f4dd;收藏⭐️&#xff0c;如有错误敬请指正! &#x1f495;未来很长&#xff0c;值得我们全力奔赴更美好的生活&…

网络通信另个角度的认识(进程间通信),端口号(为什么要有,和pid的关系,如何封装,和进程的定位原理+对应关系)客户端如何拿到服务端的port

目录 另一个角度认识网络通信 端口号 引入 -- 为什么要有端口号 问题 解决 端口号和pid 举例 介绍 分类 知名端口 注册端口 动态端口 客户端如何知道服务端的端口号 封装端口号 定位原理 进程和端口号的对应关系 数据如何被上层进程读到 另一个角度认识网络…

Node.js安装 (WIndows版本)

一. 下载地址 Node.js 安装包及源码下载地址为&#xff1a;https://nodejs.org/en/download 二. 具体安装步骤 下载对应msi文件后&#xff0c;双击下载后的安装包 点击next&#xff0c;进入下一步 选择安装目录&#xff0c;建议修改到非C盘目录 选择安装环境 点击 I…

docker启动时环境变量不生效(docker打包成镜像后环境变量失效)

前言 因项目需要多处部署&#xff0c;为了部署的方便&#xff0c;于是准备将项目环境打包成docker镜像以便于部署。mq、mysql这些在仓库中都有现成的镜像&#xff0c;虽然java和nginx的也都有&#xff0c;但是不知道当时是怎么想的&#xff0c;就不想搞太多镜像&#xff0c;也…

力扣大厂热门面试算法题 15-17

15. 三数之和&#xff0c;16. 最接近的三数之和&#xff0c;17. 电话号码的字母组合&#xff0c;每题做详细思路梳理&#xff0c;配套Python&Java双语代码&#xff0c; 2024.03.11 可通过leetcode所有测试用例。 目录 15. 三数之和 解题思路 完整代码 Java Python ​…

29.基于SSM实现的少儿编程网上报名系统(项目 + 论文PPT)

项目介绍 随着计算机的不断发展&#xff0c;已经融入到我们生活工作的每一个领域中&#xff0c;给我们的生活工作带来了很多的便利&#xff0c;因此&#xff0c;希望可以通过该系统的开发也能使少儿编程网上报名系统实现信息化管理&#xff0c;减轻人的负担&#xff0c;提高工作…

申请选择商家转账到零钱流程怎样的

商家转账到零钱是什么&#xff1f; 【商家转账到零钱】可以说是【企业付款到零钱】的升级版&#xff0c;商家转账到零钱可以为商户提供同时向多个用户微信零钱转账的能力&#xff0c;支持分销返佣、佣金报酬、企业报销、企业补贴、服务款项、采购货款等自动向用户转账的场景。…

伦敦金交易市场的参与者有哪些?

伦敦金交易市场&#xff0c;作为全球最大的黄金交易市场之一&#xff0c;吸引了众多的参与者。这些参与者来自不同的背景和角色&#xff0c;每个人都在这个市场中发挥着重要的作用。 首先&#xff0c;我们不得不提到的是市场的核心参与者——交易商。交易商是市场上最活跃的群体…

FTP,SFTP,FTPS,SSL,TSL简介,区别,联系,使用场景说明

文章目录 简介FTPFTPSSFTP加密场景选择FTPS还是SFTPFTP、SFTP、FTPS区别、联系和具体使用场景如何使用FTP、SFTP和FTPSSSLTLSSSL和TLS区别和联系&#xff0c;以及使用场景SSL和TLS技术上的区别一些问题隐式的TLS&#xff08;FTPS/SSL&#xff09;或者显式的TLS&#xff08;FTPS…

【Python】新手入门学习:什么是python解释器,它的作用是什么?

【Python】新手入门学习&#xff1a;什么是python解释器&#xff0c;它的作用是什么&#xff1f; &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基…

STM32CubeMX学习笔记19——SD卡(SDIO接口)

1、简介 1.1 SD卡简介 很多单片机系统都需要大容量存储设备&#xff0c;以存储数据&#xff08;常用的有U盘、FLASH芯片、SD卡等&#xff09;&#xff0c;比较而言SD卡是单片机大容量外部存储的首选&#xff0c;只需要少数几个IO口即可外扩一个容量从几十M到几十G的&#xff…