- 博客(5)
- 收藏
- 关注
原创 JavaScript-用工厂函数构造函数创建对象
当然了此时输入的日期是无效日期,不过这不重要,重要的是我们能用构造函数的原型属性向新对象的原型添加reserve方法使新对象能将预定信息添加到schedule上,这就是我们进行原型继承的方式。此外我们可以设置多个原型对象,应用到工厂函数中,用不同的原型对象创建出不同的对象(Object.create()),为我们提供了原型对象更多的可能性,这就是有些人使用工厂函数创建对象的原因。工厂函数可以添加原型,用多个类型的原型对象创建多个对应类型的对象,为我们提供了原型对象更多的可能性;
2024-06-24 20:52:18
1189
1
原创 JavaScript-编程范例与常见编程范式
在该工厂函数的返回对象中,我们使用简单定义属性的方法,省略属性名,直接写传入参数名,JS引擎会以传入参数的变量名创建为对象的属性并将传入参数的值设为对象的属性值。打印创建的对象obj,可以发现,obj的原型是空对象,但obj的原型的原型就是一个正常的Object,里面有构造函数等基本对象的属性。否则,我们创建的每个对象都是从头开始创建的,这是非常低效的。在JavaScript中我们已经讨论过原型,原型继承是JavaScript使用的一项技术,对象可以调用或继承其原型链中任何对象的方法和属性。
2024-06-24 20:05:47
753
原创 JavaScript-闭包练习
(1)因为var声明的i是全局变量,且由于变量提升机制,var的变量i唯一,且var声明的i的自增只会执行一次(JS引擎统计好自增的总次数并加到i上),由于在全局执行上下文中不存在闭包,全局环境下的变量或函数都能访问到,倒计时2秒后超时计时器被首次调用时里面的函数被放置在队列中并被事件循环拾取放置在堆栈中,所以等到超时计时器内函数执行时访问到的i值是5,而learners[5]根本不存在,所以最后超时计时器内的函数被浏览器执行了5次且结果都是undefined。下面是视频给出的代码和代码执行时的效果。
2024-06-24 19:42:59
572
原创 JavaScript-闭包
此时我们使用了闭包,在delayedGreeting()执行时JavaScript引擎知道超时计时器里面的函数仍然有对这些变量的引用,超时计时器里的函数也是三个变量词法作用域的一部分,在delayedGreeting()的内部,所以name,greet和punct被存在内存中(围绕这些变量创建闭包),即使delayedGreeting()执行完成并从堆栈中删除,便于超时计时器里面的函数执行时调用这三个变量。"(即任意两数乘积的结果)。接下来是超时计时器,由浏览器处理的,倒计时5秒,倒计时之后会执行计时器。
2024-06-24 16:06:06
519
原创 JavaScript-关键字this
关键字this指的是调用的对象,包含该关键字的函数,它引用一个对象,并且它是调用该函数的对象。被this调用的对象不是由函数的声明位置决定的,而是由函数的实际调用方式决定的,所以函数的调用方式决定了关键字(this)的值。接下来说说this关键字在对象方法中的使用,this关键字在不同的对象方法得到的最终值都不同。非严格模式下,调用一个函数会创建一个执行上下文,且其中一个属性是该执行上下文关键是关键字this及其引用的内容,这有助于我们理解window是this引用的对象。下面我们继续看几个实例。
2024-06-24 14:16:05
431
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅