如何理解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

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaScript中的对象分为三种:自定义对象、内置对象和浏览器对象。自定义对象开发者根据自己的需求创建的对象。内置对象JavaScript语言自带的一些对象,如Math、Date、Array、String等,它们提供了一些常用的或是最基本而必要的功能(属性和方法)。浏览器对象是指在浏览器环境中使用的对象,如window、document等。\[1\] 在JavaScript中,创建数组对象有两种方式:字面量方式和new Array()。可以使用instanceof运算符来判断一个对象是否属于数组类型,也可以使用Array.isArray()方法来判断一个对象是否为数组。例如,使用arr instanceof Array可以判断arr是否为数组,使用Array.isArray(arr)也可以判断arr是否为数组。\[2\] Date对象是基于1970年1月1日(世界标准时间)起的毫秒数。可以使用new Date()来实例化一个Date对象。Date对象有一些方法可以获取对象的原始值,如valueOf()和getTime()。另外,HTML5中提供了一个方法Date.now()来获取当前时间的毫秒数,但这个方法在兼容性方面可能存在问题。\[3\] #### 引用[.reference_title] - *1* *2* *3* [前端学习之JavaScript——内置对象](https://blog.csdn.net/Jane_xxxxxy/article/details/107926688)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值