前端进阶-类和对象

本文详细介绍了JavaScript中的类和对象,包括构造函数的结构和语法,如何创建新对象,以及查看对象构造函数的方法。文章还探讨了关键字this的不同用法,如call()、apply()和bind(),以及原型继承的概念,如何替换对象的原型,检查对象的属性等。通过这些内容,帮助读者深化对JavaScript中类和对象的理解。
摘要由CSDN通过智能技术生成

对象可以表示数据和功能。

构造函数

构造函数:结构和语法

function SoftwareDeveloper() {
   
  this.favoriteLanguage = 'JavaScript';
}

首先,构造函数并不声明局部变量,而是使用 this 关键字来保存数据。以上函数将为所创建的任何对象添加一个 favoriteLanguage 属性,并为其分配一个默认值 'JavaScript'。现在不用太在意构造函数中的 this;只要知道 this 是指在构造函数前面使用 new 关键字创建的新对象即可。

最后一点比较特别的是,这个函数似乎不会返回任何东西!JavaScript 中的构造函数不应该有一个显式的返回值(即使用 return 语句)。

创建一个新的对象

function SoftwareDeveloper() {
   
	this.favoriteLanguage = 'JavaScript';
}
let developer = new SoftwareDeveloper();
console.log(developer);
// SoftwareDeveloper {this.favoriteLanguage: "JavaScript"}

function SoftwareDeveloper(name) {
   
  this.favoriteLanguage = 'JavaScript';
  this.name = name;
}
let instructor = new SoftwareDeveloper('Andrew');
console.log(instructor);
// SoftwareDeveloper { favoriteLanguage: 'JavaScript', name: 'Andrew' }

注意,大写构造函数名称的第一个字母只是一个命名惯例。虽然第一个字母应该大写,但如果不小心用了小写,也仍然还是构造函数(即当用 new 运算符调用时,等等)。

查看对象的构造函数 (instanceOf)

function Developer(name) {
   
	this.name = name;
}
const dev = new Developer('Veronika');
typeof dev // "object"
dev instanceOf Developer; // true 

new 运算符
instanceOf 运算符

当在对象上调用方法时,this 会被赋值,并且其值指向该对象。由于它是一个保留字,因此不应该用作任何变量名称、函数名称等。

关键字 this

根据 this 的调用方式,分析 this 指代的含义:

在这里插入图片描述

如果使用 new 运算符来调用构造函数,this 的值将被设置为新创建的对象。如果在对象上调用方法,this 将被设置为该对象本身。如果简单地调用一个函数,this 将被设置为全局对象:window

this 运算符

设置自己的 this

Javascript 提供了几种设置 this 值的方法,这些方法分别是 call()apply()bind()。前两种方法在函数上被调用,会因为参数的传入方式不同而有所不同。第三种方法是返回新函数的方法,每种方法都在不同的环境中使用。

call()

call() 是一个直接调用到函数上的方法。我们传递给它一个单一的值,以设置为 this 的值,然后逐个传入该函数的任何参数,用逗号分隔。

function multiply(n1, n2) {
   
  return n1 * n2;
}
multiply(3, 4);
// 12
multiply.call(window, 3, 4);
// 12

除了调用常规函数之外,我们如何调用附加到对象上的函数(即方法)呢?

使用 call() 来调用方法允许我们从对象中“借用”方法,然后将其用于另一个对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值