mdn array(表达式“[12, 15, 8].find(function(ele){return ele >=10})“的返回值____)
本文目录
表达式“[12, 15, 8].find(function(ele){return ele >=10})“的返回值____
返回值是 12。
find 方法是返回数组中第一个符合条件的项,如果没有符合条件的项,则返回 undefined。
MDN Array.prototype.find()
要验证表达式,可以直接在浏览器里按 F12,打开控制台,在里边直接执行代码,查看结果。
js 自己创建的数组 为什么没有get set
没有说为什么没有,而是 Array 这一种 JavaScript 标准内置对象没有 get 和 set 方法。MDN JavaScript 标准内置对象 Array
你截图的 get set 方法也不是属于数组的,而是数组元素中的对象的。对于数组来说,添加 get set 方法没什么意义,因为对于数组元素的确定,是用下标的。如:
const a = ;
a = 3;
console.log(a);
要添加 get set 也很容易:
a = {_value: 1,get value() {return this._value;},set value(value) {this._value = value;}}
这样 a 对象就有 get set 了。注意 get set 方法对应的方法名,和你用这个方法名要存储的字段不能用相同,不然会内存溢出。(不要问我为什么特意提出来。)
new操作符原理及实现
new 操作符通过执行自定义构造函数或者js内置构造函数,从而生成一个实例对象。
mdn 上把内部操作大概分为4步:
通过一个简单的demo感受下上面的步骤
可以看到new操作符执行Person构造函数后,返回了一个内部创建的新对象, 并且以这个对象为上线文环境执行了一遍Person函数 ,最后将其返回,同时对象p的原型属性指向构造函数的原型, 这样也就保证了实例能够访问在构造函数原型中定义的属性和方法 。
上面的demo中构造函数是没有返回值的,如果说构造函数有返回值呢,如下
如果构造函数最后返回了一个对象,就会直接将其返回,而不是内部创建的新对象。
经过测试发现,除了返回对象,如果返回其他类型,只要最后返回的类型为引用类型 object 或者 function ( Function , Object , Array , Date , Error , Regexp ,要排除 null ,因为 typeof null === ’object’ )就会直接将其返回,而其他基本类型都会返回内部新创建的对象。
这里我们尝试通过封装一个 myNew 方法模拟new操作符的主要功能:接受若干参数,第一个参数为构造函数 ctr ,其余为构造器所需参数, myNew(ctr, arg1, arg2,...)
这里的第一步把mdn中的1、2步放在了一起:创建一个新对象,并将其 __proto__ 属性指向构造函数的 prototype 属性
也可以使用如下方法
获取到参数之后,以内部新创建的对象 obj 为上线文执行构造函数,作用是为 obj 赋值
上面的 const args = .slice(1) 实现。
对执行构造函数后的返回值 result 做兼容处理。 如果构造函数最终返回对象、函数、数组、日期等其他引用类型及Symbol,会将其直接返回,其他基本类型及 null 、 undefined 会返回内部新创建的对象实例。
最后,简单测试一下 没有返回值
有返回值
面试官问:能否模拟实现JS的new操作符 手动实现一个new操作符理解
更多文章:
穿梭时空的商人(如果你拥有的时空门,可以穿越到《清明上河图》的宋朝,你会在那里居住吗)
2024年7月13日 09:40
shell脚本判断文件类型(linux shell编程 test 如何判断文件类型,如果文件为空)
2024年7月23日 08:50
mysql存储过程返回(mybatis调用mysql存储过程(返回参数,单结果集,多结果集))
2024年8月31日 04:45
socket调webservice(调用webservice 出现error writing to socket错误)
2024年5月23日 08:13
integer什么情况下会装箱(java中什么是自动装箱与拆箱呢)
2024年7月2日 02:51
数据结构教程唐发根(北航991数据结构与C语言程序设计专业课都考什么991数据结构与C语言程序设计的指定教材是什么)
2024年6月28日 12:29
memcached怎么登录(在windows环境中怎么启动memcached)
2024年6月28日 23:26
ubuntu安装命令(ubuntu 下如何安装install)
2024年7月23日 08:28
鸿蒙系统源代码下载(“鸿蒙之父”离开华为,鸿蒙3.0何去何从)
2024年7月8日 15:55
新手引导英文(《popular wars》新手引导中英文翻译攻略)
2024年7月24日 04:52
vlookup函数的使用方法锁定(如何让vlookup函数中的搜索区域固定,不在随搜索单元格的变化而变化)
2024年7月23日 19:13