ECMAScript 2019: 详解方法扩展属性,从 Bind to toString
ECMAScript 2019是一种最新的JavaScript语言版本,也是一种大部分现代网站的前端开发所用的语言版本。在ES2019中,方法扩展属性是一种非常重要的功能,可以大大提高代码的复用性和可读性。本文将详细介绍ES2019中的方法扩展属性,从Bind方法到ToString方法,帮助读者更好地学习这项功能并应用到实际的开发中。
一、Bind方法
Bind方法是一种非常有效的方法扩展属性,它可以创建一个新的函数,并将指定的this值和参数列表作为新函数的上下文。可以用普通函数或箭头函数来调用Bind,以下是两个例子:
-- -------------------- ---- ------- ----- ------ - - ---------- ------- --------- ------ --------- ---------- - ------ ------------------ ----------------- - - ----- ------- - - ---------- ------- --------- ------- - ----- ------------------- - ------------------------------ ----------------------------------- -- ------- ----- ------
在上面的代码中,我们定义了一个person对象和person2对象,分别包含了firstName和lastName属性。我们使用bind方法将person2和person.fullName绑定,并将其结果赋值给新的函数fullNameWithPerson2。接着我们打印fullNameWithPerson2的返回值,可以看到输出的是'Len Smith',说明Bind方法成功绑定了person.fullName和person2。
二、Call方法
Call方法是另一个非常有用的方法扩展属性,它可以调用一个函数,并将指定的this值和参数列表传递给这个函数。同样可以用普通函数或箭头函数来调用Call,以下是一个例子:
-- -------------------- ---- ------- ----- ------ - - ---------- ------- --------- ------ --------- ---------- - ------ ------------------ ----------------- - - ----- ------- - - ---------- ------- --------- ------- - ----- ------------------- - ------------------------------ --------------------------------- -- ------- ----- ------
在上面的代码中,我们同样定义了person和person2两个对象,以及一个fullName方法。我们使用Call方法调用fullName方法,并将person2作为this值传递给该方法。最后我们打印fullNameWithPerson2,可以看到输出的也是'Lena Smith',同样说明Call方法成功地绑定了person2和person.fullName。
三、Apply方法
Apply方法与Call方法非常相似,也可以调用一个函数并将指定的this值和参数数组传递给这个函数。以下是一个例子:
-- -------------------- ---- ------- ----- ------ - - ---------- ------- --------- ------ --------- ---------- - ------ ------------------ ----------------- - - ----- ------- - - ---------- ------- --------- ------- - ----- ------------------- - ------------------------------- --------------------------------- -- ------- ----- ------
在上面的代码中,我们同样使用Apply方法调用fullName方法,并将person2作为this值传递给该方法。最后我们打印fullNameWithPerson2,也可以看到输出的是'Lena Smith',同样说明Apply方法成功地绑定了person2和person.fullName。
四、Bind、Call和Apply方法的比较
Bind、Call和Apply方法,是非常常用的方法扩展属性,它们的作用类似,但有一些不同之处。以下是一些比较:
1、Bind方法返回一个新的函数,而Call和Apply方法是立即执行该函数。
2、Call和Apply方法传递参数的方式不同,Call方法是一个一个传递参数,Apply方法是通过数组传递参数。
3、Bind方法是永久绑定某个特定的this值,而Call和Apply方法是一次性使用。
在实际开发中,综合考虑使用场景、性能及复用性等因素,选择使用合适的方法扩展属性。
五、ToString方法
ToString方法是ES2019中的又一个方法扩展属性,它是所有对象的一个方法,可以将其转换为字符串。默认情况下,Javascript对象和数组的ToString方法返回的是对象标识符,而字符串和数字返回本身的值。以下是一个例子:
-- -------------------- ---- ------- ----- ------ - - ---------- ------- --------- ------ ---- --- --------- ---------- - ------ ------------------ ----------------- ----------- ----- ----- - -- ------------------------------- -- ------- ----- ---- -- ----- ----
在上面的代码中,我们定义了一个person对象,并在其中增加了ToString方法,将该对象转换为字符串。接着我们打印输出person.toString(),可以看到返回的是'John Doe, 25 years old',即该方法成功的将对象转换为字符串。
六、总结
ES2019的方法扩展属性,是在方法的编写和调用方面具有很大的作用。其中,Bind、Call和Apply方法可以帮助我们更好地实现方法的绑定和调用,提高了代码的可读性和可复用性;ToString方法可以将对象转换为字符串,让我们的代码更加灵活和易于调用。在实际开发中,我们需要结合具体场景,综合考虑方法的性能和复用性等因素选择不同的方法扩展属性。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64af852748841e9894b94be5