缘由

今天看到一段代码

return Object.assign(func1, func2);

心生疑惑,为什么 Object.assign 的参数可以是函数? 于是有了下面这一堆东西,其实都是老生常谈的东西,可能是岁数大了吧,有些片段都快丢失了,哈哈

prototype

js 中 万物皆是对象!!!

proto(隐式原型)与 prototype(显式原型)

对象具有属性proto,可称为隐式原型

实例(对象)的 proto === 构造(该实例)函数的 prototype 函数

Function 是特殊的对象,除了有proto外,还有自己的特有的属性 - 原型对象(prototype)

原型对象有一个属性 - constructor,指回 x.prototype 的 x(原函数)

所以 函数 还是 构造函数的函数(Function)都会指回 Object

// 特例
function aa() {}
aa.prototype; // => {constructor: ƒ}Function.prototype; // => ƒ () { [native code] } 函数也是对象哦// 所以
Function.prototype.constructor // => ƒ Function() { [native code] }Function.prototype.constructor === Function // => true

Object.prototype 是 原型的尽头,在往上就是 null 了

看张老图吧

Objecg.assign

定义

Object.assign 方法只会拷贝源对象自身的并且可枚举的属性到目标对象

分为两个关键点 源对象自身且可枚举的属性 和 目标对象,一个个解释

枚举

判断是否为枚举属性: Object.propertyIsEnumerable(prop) 如果判断的属性存在于 Object 对象的原型内,不管它是否可枚举都会返回 false。

总的来说,不管什么类型,只要可以用 for...in 遍历出来的属性,全都可以拷贝到 对象

例如 string 和 number:

对象

所说的对象是哪些呢?通过 instanlceof 可知(不包含全部类型)

上面是前提,下面让我们看一个 demo 吧:

function fn() {}
console.log(fn[0], fn[1], fn[2]); // => undefined undefined undefinedconst str = "963";
for (let k in str) {console.log(`${k}: ${str[k]}`); // => 0: 9// => 1: 6// => 2: 3
}Object.assign(fn, "963");console.log(fn[0], fn[1], fn[2]); // => 9 6 3

结果如下:

ref="https://github.com/creeperyang/blog/issues/9">深入讲解proto 和 prototype 属性的可枚举型

js两个问号代表什么_js中的Object.assign接受两个函数为参数的时候会发生什么?...相关推荐

  1. js onclick传参对象_js中onClick([object object])的传参问题。跪求!

    你的位置: 问答吧 -> JavaScript -> 问题详情 js中onClick([object object])的传参问题.跪求! 问题是这样的,看代码 for(var i=0;i ...

  2. c语言怎么同时输入两个字符,解决C语言中使用scanf连续输入两个字符类型的问题...

    昨天用C编程,遇到一个关于scanf的细节问题,假如运行如下程序: #include int main() { char ch1,ch2; printf("Input for ch1:/n& ...

  3. JavaScript中的Object.assign()方法

    目录 介绍 什么是Object.assign()? JavaScript可枚举属性 语法和参数 您可以使用Object.assign()方法做什么? 合并对象 克隆对象 关于Object.assign ...

  4. python中的object是什么意思_Python函数是所谓的第一类对象(First-Class Object)是什么鬼?...

    之前写过一篇关于装饰器的文章,虽然写得还算不错,但是也有不少同学表示没看懂,我大概分析了其中的原因,主要问题是他们不理解函数,因为Python中的函数不同于其它语言. 正确理解 Python函数,能够 ...

  5. js 模糊筛选 筛选数组数据_JS中的数组过滤,从简单筛选到多条件筛选

    在上家公司工作的时候,有一个需求是在前端部分完成筛选功能,一次拿到所有数据,然后根据条件筛选.通常情况下筛选是后台给接口,在数据量不大的情况下,也有人可能会遇到前端筛选这样的情况,特别写了这篇文章分享 ...

  6. bat 两个文本字符替换_Excel中最全最实用的文本函数公式大全

    一.字符长度与字节长度 1.获取A1单元格字符长度 =LEN(A1) 2.获取A1单元格字节长度 =LENB(A1) 3.将A1单元格全角(双字节)字符转换成半角(单字节)字符 =ASC(A1) 4. ...

  7. js的json php无法json_decode,PHP中遇到BOM、 编码导致json_decode函数无法解析问题

    昨天同事遇到一个奇怪的问题,就是以下代码,无法通过JSON校验,也无法通过PHP的json_decode函数解析. 复制代码 代码如下: [ { "title": "& ...

  8. js vue中得延时器_js中延时代码

    1 js 的基本数据类型? 2 JavaScript 有几种类型的值? 3 什么是堆?什么是栈?它们之间有什么区别和联系? 4 内部属性 [Class] 是什么? 5 介绍 js 有哪些内置对象? 6 ...

  9. js 正则中冒号代表什么_JS正则表达式一条龙讲解(从原理和语法到JS正则)

    正则啊,就像一座灯塔,当你在字符串的海洋不知所措的时候,总能给你一点思路:正则啊,就像一台验钞机,在你不知道用户提交的钞票真假的时候,总能帮你一眼识别:正则啊,就像一个手电筒,在你需要找什么玩意的时候 ...

最新文章

  1. 如何打造规范的开源项目workflow
  2. 选择列表中的列……无效,因为该列没有包含在聚合函数或 GROUP BY 子句中
  3. 2008年5月小记(??, #, DataContractJsonSerializer, CTE Ranking top)
  4. scala 多线程_Scala中的多线程
  5. 【计算机视觉】【车辆识别】--Matlab实现
  6. 二、UI线程和界面卡死
  7. python:python对象属性及属性函数property()
  8. Hadoop HBase概念学习系列之什么是HBase? (一)
  9. html响应式布局media,JS中使用media实现响应式布局_飛雲_前端开发者
  10. 咸阳机场地下停车场如何收费,咸阳机场停车收费价格
  11. 用python做flash动画_Flash交互动画的制作(一)
  12. 用Actix写的一个类似于Facemash的小项目总结
  13. Debian搭建PPTP
  14. 【自动化测试】Selenium IDE脚本编辑与操作(了解)
  15. 计算机三维设计ppt,1 三维建模技术发展史.ppt
  16. unity实现太空场景
  17. Kafka源码阅读-Controller(二)管理brokers
  18. 2022年团体程序设计天梯赛初体验【个人题解L1-L2】
  19. 使用Python收发邮件
  20. 通达信除权除息(tdx gbbq)导出为文本文件

热门文章

  1. 树莓派4B安装ffmpeg的方法
  2. NOI2019 SX 模拟赛 no.5
  3. ztz11的noip模拟赛T1:愤怒的XiaoX
  4. 解决 IntelliJ 乱码问题
  5. PagerSwitch tab样式加上下拉刷新(一)
  6. 免费素材:包含 250+ 组件的 DO UI Kit
  7. 计算重叠最长子串问题
  8. Python学习笔记五--条件和循环
  9. 记录一下:new的几种用法
  10. MSDN最新的2007年6月的中文版本发布了