先有对象还是先有函数,鸡生蛋、蛋生鸡的问题。有关js里内置对象Function和Object的思考
js里创建的函数本身作为一个实例对象都是由内置对象Function作为构造函数创造出来的,所谓var f = funciton(a){b}即等同于f = new Function(a,b)。
同时js里Object也是一个构造函数,因此他也是Function加工出来的。
Function作为一个对象实例,也是Function加工出来的,具有自原性。
但Function的加工原料,也就是原型链的父原型是Object,即Object可以通过Function变成Function。
那么是什么通过Function的加工变成了Object呢?
这就是最原始的那个静态种子,答案就是Object.prototype,在控制台里打印出来是:
- {constructor: ƒ, __defineGetter__: ƒ, __defineSetter__: ƒ, hasOwnProperty: ƒ, __lookupGetter__: ƒ, …}
- constructor: ƒ Object()
- hasOwnProperty: ƒ hasOwnProperty()
- isPrototypeOf: ƒ isPrototypeOf()
- propertyIsEnumerable: ƒ propertyIsEnumerable()
- toLocaleString: ƒ toLocaleString()
- toString: ƒ toString()
- valueOf: ƒ valueOf()
- __defineGetter__: ƒ __defineGetter__()
- __defineSetter__: ƒ __defineSetter__()
- __lookupGetter__: ƒ __lookupGetter__()
- __lookupSetter__: ƒ __lookupSetter__()
- get __proto__: ƒ __proto__()
- set __proto__: ƒ __proto__()
而Object.prototype.__proto__==null
Object.prototype.constructor==Object()
那么这就可以这样来梳理了,null作为原料通过Object函数构造出了Object.prototype,
Object.prototype作为原料通过Function函数构造出了Object,
Object作为原料通过Function函数构造出了Function本身。
完美解决了,对吧!
null是什么呢?和数字符字面常量,字符串字符常量,true,false,undefine一起作为js的基本类型,再加上那些运算符等符号就可以看作是开天辟地的真正基础了。而这些基础为什么不是对象呢?不是js里万物皆对象吗?
对于js的创造者来说,仅仅是利用一些相等搭了一个圈,但沉浸在这个世界的人们就永远也看不到其中事物的本源了。
这大概和鸡生蛋还是蛋生鸡这样的哲学本源问题是一致的,就像无论唯心还是唯物,在 西部世界 里所追寻的那个迷宫的核心究竟如何,只要还在其中,就是永远没有答案的。
先有对象还是先有函数,鸡生蛋、蛋生鸡的问题。有关js里内置对象Function和Object的思考相关推荐
- js 序列化内置对象_内置序列化技术
js 序列化内置对象 本文是我们名为" 高级Java "的学院课程的一部分. 本课程旨在帮助您最有效地使用Java. 它讨论了高级主题,包括对象创建,并发,序列化,反射等. 它将指 ...
- 2、js常用内置对象
文章目录 1. JS内置对象是什么? 2. 字符串对象及常用方法 3. 数组对象及常用方法 4. Math对象及常用方法: 5. Date对象及常用方法 6. Document 对象 1. JS内置对 ...
- JS标准内置对象 数组 的 34 个方法
先放一个语雀的链接: https://www.yuque.com/docs/share/13314a2f-05c0-4de6-8d61-8acd9e566ad4?# <JS内置对象 Array& ...
- 11、JS笔记-内置对象
1.内置对象 js中对象分为三种: 自定义对象.内置对象.浏览器对象(js独有) 内置对象: js语言自带的对象,供开发者使用,提供一些常用或基本的功能(属性和方法) 2.Math对象 Math中所有 ...
- js浏览器内置对象和js内置对象
浏览器内置 1.Location 对象 hash :返回一个URL的锚部分 host 返回一个URL的主机名和端口 hostname 返回URL的主机名 href 返回完整的URL pathname ...
- 【js】内置对象String的常用方法
<html><head></head><script type="text/javascript">var stuName1 = & ...
- 【js】内置对象array的常见方法的使用
<html><head></head><script type="text/javascript">//数组var stuName1 ...
- js中内置对象Math()常用方法笔记
Math.random()获取随机数,范围[0,1)之间的随机小数 var num = Math.random(); console.log(num); 复制代码 Math.floor() 向下取整 ...
- 下面属于python内置对象的有哪些_python练习题-写一个函数,打印所有包含copy方法的内置对象...
代码: #encoding=utf-8 for i in dir(__builtins__): #print "i:",i try: #这里的i是个字符串,并不能直接用dir(i) ...
最新文章
- c++继承中的构造和析构
- 关于font-size对垂直居中影响的问题
- pywin32官方说明文档_GEE学习笔记 六十五:GEE的Python版API说明文档(英文版)
- Google+强推实名制引爆不满 用户增速放缓
- ActiveMQ 依赖JDK版本
- 营销管理手册_某连锁动物医院营销管理咨询项目方案成功汇报
- 4.3配置自定义情况的Bean实例
- Linux log工具:zlog编译安装及使用示例(同样适用交叉编译环境)
- 计算思维是利用计算机,计算机思维论文
- Win7下的OpenGL安装
- android BKS
- 腾讯优图:AI内容理解新实践
- 反射知识点总结《Lipp学习笔记》
- 前端校招该考察什么?一个面试官的思考
- 给幼儿园小朋友看的网络安全扫盲篇
- CHOJ 5202 自然数拆分Lunatic版 【完全背包模型】
- 怎么看网站有没有被收录(百度360搜狗等搜索引擎通用)
- Android Design 官方文档离线版(英文)!
- Excel VBA初级系列培训--课时3
- 公务员考试题集错解汇集之判断推理