“撩过”c++的对象,“拿捏”了python的对象,你还怕拿不下javascript的对象吗?

简介: 前言你是否常常可以看到属于程序员的热门话题“已经new了好几个对象了!”,这不最近开学了吗,长期单身的阿牛也着急了!决定对javascript中的对象下手了。

你是否常常可以看到属于程序员的热门话题“已经new了好几个对象了!”,这不最近开学了吗,长期单身的阿牛也着急了!决定对javascript中的对象下手了。

“撩过”c++的对象,“拿捏”了python的对象,那么今天我们看看javascript中的对象到底是什么,看能不能一次性拿下~~~

(嘿嘿嘿!不行的话就多来几次,“舔狗”也挺不错的。想做“海王”就多物色几门语言的对象,多new几个,最终你会发现都差不多!)


🟢什么是对象?

嘿!这还用问吗?对象不就是“你的女朋友” 嘛!,或许你以为我在胡说,但事实上确实就是。

看完下面这个定义,你就知道我说的对不对了…


现实生活中:万物皆对象,对象是一个具体的事物,看得见摸得着的实物。如,一本书、一辆汽车、一个人都可以是"对象”,一个数据库、一张网页、一个与远程服务器的连接也可以是“对象”。


在 JavaScript 中,对象是一组无序的相关属性和方法的集合,所有的事物都是对象,例如字符串、数值、数组、函数等。


对象是由属性和方法组成的。


属性:事物的特征,在对象中用属性来表示(常用名词)

方法:事物的行为,在对象中用方法来表示(常用动词)

🟢为什么需要对象?

为什么需要“对象”?是为了化解你的孤独与寂寞嘛,拜托老兄,不要那么肤浅好嘛!


找对象其他的不说,但她一定有一个作用:她能使你更加完整!

不信你看:

保存一个值时,可以使用变量,保存多个值(一组值)时,可以使用数组(对比python中的列表)。如果要保存一个人的完整信息呢?


例如,将“张三”的个人的信息保存在数组中的方式为:

var arr= [‘张三’,‘男’,168,154];


这样确实存储了数据,但你是不是感觉他还不太完整!你知道168,154分别是什么吗?这时候对象的作用就体现出来了。


js 中的对象用{ }表示(对比python中的字典),表达结构更清晰,更强大。

var obj = {
          name:'张三',
          sex:'男',
          height:168,
          weight:154,
          fun:function(){
              console.log("我是张三!");
          }
      }

里面的属性或者方法我们采取键值对的形式键属性名:值属性值

多个属性或者方法中间用逗号隔开的。

方法冒号后面跟的是一个匿名函数。

🟢创建对象的三种方式

🍋利用对象字面量创建对象

**对象字面量:**就是花括号{},里面包含了表达这个具体事务(对象)的属性和方法。


var obj_1 = {}; //创建了一个空的对象

1

🍋利用 new 关键字创建对象

 var obj_2 = new Object(); //创建了一个空的对象

1

🍋利用构造函数创建对象

为什么需要构造函数呢?

 var zhang = {
          name:'张三',
          sex:'男',
          height:168,
          weight:154,
          fun:function(){
              console.log("我是张三!");
          }
      }
      console.log(zhang);
      var li = {
          name:'李四',
          sex:'男',
          height:176,
          weight:154,
          fun:function(){
              console.log("我是李四!");
          }
      }
      console.log(li);

可以看到,我们用前面两种创建方法对象,如果需要多一点且属性和方法大都相同的对象时,这样一个一个创建就显得十分麻烦。


因此,我们可以利用函数的方法,重复这些相同的代码,我们把这个函数就叫做构造函数。


构造函数:是一种特殊的函数,主要用来初始化 对象,即为对象成员变量赋初始值,它总与 new 运算符一起使用。我们可以把对象中一些公共的属性和方法油取出来,然封装到这个函数里面。


通俗的说:构造函数就是把我们对象里面的一些相同的属性和方法抽象出来封装到函数里面。


//构造函数的语法格式

function 构造函数名(){

     this.属性 = 值;

     this.方法 = function () { }

}

new 构造函数名 ();

function Star(name,age,sex){
        this.name = name;
        this.age = age;
        this.sex = sex;
    }
    var hg = new Star('胡歌',35,'男');  //调用函数返回的是一个对象
    console.log(hg);
    var ldh = new Star('刘德华',50,'男');

image.png

这样创建对象就方便多了。


注:

1.构造函数名字首字母要大写。

2.我们构造函数不需要 return 就可以返回结果。

3.我们调用构造函数必须使用new 。

4.我们只要 new Star ()调用函数就创建一个对象。


🍑new关键字的执行过程

new 在执行时会做四件事情:

1.在内存中创建一个新的空对象。

2.让 this 指向这个新的对象。

3.执行构造函数里面的代码,给这个新对象添加属性和方法。

4.返回这个新对象(所以构造函数里面不需要 return )。


🟢对象属性的增删改查(和py的字典类似)

var obj_1 = {}  //创建了一个空的对象
      //添加属性及值
      obj_1.name = 'aniu'; 
      obj_1.sex = '男';
      console.log(obj_1);

image.png

var zhang = {
          name:'张三',
          sex:'男',
          height:168,
          weight:154,
          fun:function(){
              console.log("我是张三!");
          }
      }
      delete zhang.weight;  // 删除对象的体重
      console.log(zhang);

image.png

 var li = {
          name:'李四',
          sex:'男',
          height:176,
          weight:154,
          fun:function(){
              console.log("我是李四!");
          }
      }
      li.sex = '女'; // 修改对象的性别
      console.log(li);

查属性:

console.log(li.name); //法一

console.log(li[‘sex’]); //法二

调用方法:

li.fun()

var li = {
          name:'李四',
          sex:'男',
          height:176,
          weight:154,
          fun:function(){
              console.log("我是李四!");
          }
      }
      console.log(li.name); //法一
      console.log(li['sex']); //法二
      li.fun();  //调用方法
    function Star(name,age,sex){
        this.name = name;
        this.age = age;
        this.sex = sex;
        this.work = function(work){
            console.log(work);
        }
    }
    var hg = new Star('胡歌',35,'男');  //调用函数返回的是一个对象
    hg.work("仙剑"); //调用方法

image.png

var li = {
          name:'李四',
          sex:'男',
          height:176,
          weight:154,
      }
      console.log(li.name);
      console.log(li.sex);
      console.log(li.height);
      console.log(li.weight);

像这样输出对象的属性值很麻烦,因此可以用遍历。

for … in 语句用于对数组或者对象的属性进行循环操作

var li = {
          name:'李四',
          sex:'男',
          height:176,
          weight:154,
      }
      for (var k in li){
          console.log(k); //k 变量 输出得到的是属性名
          console.log(li[k]);  // obj[k] 输出得到的是属性值
      }

image.png

相关文章
|
8天前
|
JavaScript 前端开发
如何在 JavaScript 中使用 __proto__ 实现对象的继承?
使用`__proto__`实现对象继承时需要注意原型链的完整性和属性方法的正确继承,避免出现意外的行为和错误。同时,在现代JavaScript中,也可以使用`class`和`extends`关键字来实现更简洁和直观的继承语法,但理解基于`__proto__`的继承方式对于深入理解JavaScript的面向对象编程和原型链机制仍然具有重要意义。
|
12天前
|
Web App开发 JavaScript 前端开发
如何确保 Math 对象的方法在不同的 JavaScript 环境中具有一致的精度?
【10月更文挑战第29天】通过遵循标准和最佳实践、采用固定精度计算、进行全面的测试与验证、避免隐式类型转换以及持续关注和更新等方法,可以在很大程度上确保Math对象的方法在不同的JavaScript环境中具有一致的精度,从而提高代码的可靠性和可移植性。
|
6天前
|
存储 编译器 C++
【c++】类和对象(中)(构造函数、析构函数、拷贝构造、赋值重载)
本文深入探讨了C++类的默认成员函数,包括构造函数、析构函数、拷贝构造函数和赋值重载。构造函数用于对象的初始化,析构函数用于对象销毁时的资源清理,拷贝构造函数用于对象的拷贝,赋值重载用于已存在对象的赋值。文章详细介绍了每个函数的特点、使用方法及注意事项,并提供了代码示例。这些默认成员函数确保了资源的正确管理和对象状态的维护。
29 4
|
7天前
|
存储 编译器 Linux
【c++】类和对象(上)(类的定义格式、访问限定符、类域、类的实例化、对象的内存大小、this指针)
本文介绍了C++中的类和对象,包括类的概念、定义格式、访问限定符、类域、对象的创建及内存大小、以及this指针。通过示例代码详细解释了类的定义、成员函数和成员变量的作用,以及如何使用访问限定符控制成员的访问权限。此外,还讨论了对象的内存分配规则和this指针的使用场景,帮助读者深入理解面向对象编程的核心概念。
25 4
|
12天前
|
JavaScript 前端开发 图形学
JavaScript 中 Math 对象常用方法
【10月更文挑战第29天】JavaScript中的Math对象提供了丰富多样的数学方法,涵盖了基本数学运算、幂运算、开方、随机数生成、极值获取以及三角函数等多个方面,为各种数学相关的计算和处理提供了强大的支持,是JavaScript编程中不可或缺的一部分。
|
30天前
|
存储 编译器 对象存储
【C++打怪之路Lv5】-- 类和对象(下)
【C++打怪之路Lv5】-- 类和对象(下)
27 4
|
30天前
|
编译器 C语言 C++
【C++打怪之路Lv4】-- 类和对象(中)
【C++打怪之路Lv4】-- 类和对象(中)
23 4
|
1月前
|
缓存 JavaScript 前端开发
JavaScript中数组、对象等循环遍历的常用方法介绍(二)
JavaScript中数组、对象等循环遍历的常用方法介绍(二)
31 1
|
1月前
|
存储 JavaScript 前端开发
js中函数、方法、对象的区别
js中函数、方法、对象的区别
16 2
|
1月前
|
C++ Python
探索Python与C/C++混合编程的艺术
探索Python与C/C++混合编程的艺术
36 1