likes
comments
collection
share

深入理解JS中的对象和包装类:从基础到应用

作者站长头像
站长
· 阅读数 44

前言

对象

对象是面向对象编程中的核心概念之一,它是程序中的实体,具有状态(属性)和行为(方法)。对象可以是现实世界中的实际物体,也可以是程序中的抽象概念。在面向对象编程中,对象是类的实例。类是对象的模板,描述了对象应该具有的属性和行为。当我们创建一个类的实例时,就生成了一个对象,这个对象具有类定义的属性和行为。

包装类

包装类是一种用于将基本数据类型转换为对象的类,在Java中提供了对应于每种基本数据类型的包装类。这些包装类提供了一些额外的功能,比如将基本数据类型转换为对象、在集合类中使用基本数据类型等。

介绍

对象的定义

定义一个对象ltt

var ltt = {
    name: 'lenora',
    age: 18,
    sex: 'girl',
    run: function() {
        console.log('I am running!');
        this.health--;
    },
    drink: function() {
        console.log('I am drinking coconut~');
        this.health++;
    },
    health: 100
}

对对象进行增删改查(执行后面的代码时注释下面的代码)

//增
ltt.boyFriend = 'lxp';

//修改
ltt.age = 2;

//查
console.log(ltt.health);

//删除
delete ltt.sex

现在我们为ltt增加一个属性为boyFriend,值为lxp的键值对,并输出ltt

var a = 'boyFriend';
ltt[a] = 'lxp';//注意ltt.a是无法得到想要的结果的 ltt.a ==> ltt['a']

console.log(ltt);

深入理解JS中的对象和包装类:从基础到应用

注意:访问对象上不存在的属性,得到undefined,而不是报错。

创建对象的方式

创建对象字面量

var obj = {}  //创建对象字面量/对象直接量

调用系统自带的构造函数 new Object()

// Object() 构造函数  String()   Number()   Boolean()

var obj2 = new Object();
obj2.a = 'hahahhaha'

console.log(obj2);

深入理解JS中的对象和包装类:从基础到应用

调用自定义的构造函数

function Car(color) {
    this.name = 'su7';
    this.height =  '1400';
    this.lang = '5000';
    this.weight = 1000;
    this.color = color;
}

let myCar = new Car('black');

console.log(myCar);

深入理解JS中的对象和包装类:从基础到应用

实例一

//构造函数
People.prototype.a = 1;
function People(name, age ,sex) {
  this.name = name;
  this.age = age;
  this.sex = sex;
 }

let p1 = new People('ltt', 18, 'female');//实例对象

console.log(p1);
console.log(p1.a);

深入理解JS中的对象和包装类:从基础到应用

分析 构造函数被new时的过程的执行步骤:

  1. var this = {};==>创建this对象
  2. 往this对象添加属性
  3. this.proto=People.prototype;
  4. return this;==>返回this对象

构造函数 new 的过程

  1. new 会在构造函数中创建一个 this 对象
  2. 执行函数中的逻辑代码 (相当于往this对象上添加属性)
  3. this.proto=xxx.prototype;
  4. return this 对象

包装类

实例一

//包装类

//原始值是不能拥有属性和方法的。属性和方法是对象独有的
var num = 123;// ==> num = new Number(123) ==> num为一个对象
num.abc = 'hehe'
console.log(num.abc);

深入理解JS中的对象和包装类:从基础到应用

分析 该代码的执行过程实际上是下面的代码,会形成一个包装类,定义num时会调用系统自带的构造函数Number()来创建一个对象num,并为该对象添加属性abc,但是执行完后v8引擎发现代码的本意不是这样的,就删除了num对象中的abc属性,所以输出undefined。

//包装类  --- 这个隐式的过程
 new Number(123).abc = 'hehe';
delete new Number(123).abc;
console.log(num.abc);

实例二

var num = new Number(123);
num.abc = 'haha';
console.log(num.abc);
console.log(num * 2);//当参与运算时,变为原始类型

深入理解JS中的对象和包装类:从基础到应用

分析 当对象num参与运算时,会变为原始类型number,所以输出246。

实例三

var str = 'abcd'; // ==>str = new String('abcd') ==> str为一个对象
console.log(str.length);//内置属性

深入理解JS中的对象和包装类:从基础到应用

分析 length为str对象的内置属性。

实例四

var arr = [1, 2, 3, 4, 5]
arr.length = 2;
console.log(arr);

var str = 'abcde';
str.length = 2;
console.log(str.length);

深入理解JS中的对象和包装类:从基础到应用

分析 数组arr可以通过改变length来改变数组,但是字符串str不可以,是因为str会形成一个包装类。

//包装类
new String('abcde').length = 2;
delete new String('abcde').length;
new String('abcde').length;

结语

看完有没有对对象和包装类多了一些了解呢~如果有收获的话记得给小编一键三连哦·

深入理解JS中的对象和包装类:从基础到应用

转载自:https://juejin.cn/post/7365811000475680778
评论
请登录