javascript的哲学,Function构造函数的神奇之处!我生了我!
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript的哲学,Function构造函数的神奇之处!我生了我!,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2349字,纯文字阅读大概需要4分钟。
内容图文
![javascript的哲学,Function构造函数的神奇之处!我生了我!](/upload/InfoBanner/zyjiaocheng/627/a216c5f20b854558b14e8eeef64d1d90.jpg)
先来看一段代码
Object instanceof Function;//true Function instanceof Object;//true
能理解吗?
首先介绍 instanceof 运算符,instanceof 运算符用于检测,构造函数的 prototype 属性,是否出现在,某个实例对象的原型链上。
function Car(make, model, year) { this.make = make; this.model = model; this.year = year; } const auto = new Car('Honda', 'Accord', 1998); console.log(auto instanceof Car);// true console.log(auto instanceof Object);// true
换句话来说,以上面代码为例子,就是 auto 这个实例的原型链上, 有没有 Car.prototype 这个对象。
很明显 auto 这个对象是构造函数 Car 的实例,必然继承 Car.prototype ,所以必然是 true 。
除了 null ,所以对象都继承 Object.protype ,所以 auto 也继承 Object.protype。
下面好玩了,先解释第一段代码
Object instanceof Function // true
我们都知道,Object 是一个内置的构造函数,所以这行代码表示的是, Object 这个构造函数的原型链上,有没有 Function.prototype 这个对象。
而 Object 是一个构造函数,所以必然是一个函数。我们知道,任何函数都是由 Function() 这个构造函数的实例,所以必然继承了 Function.prototype 。
而且再往上追溯,Function.prototype 也是一个对象,任何对象都是 Object 构造函数的实例,所以 Function.prototype 继承了 Object.prototype,
所以 Object instanceof Object 也是 true 。
Object instanceof Object; //true
至于
Function instanceof Object;//true
因为 Function() 是函数,所以数据类型也是对象,任何对象都继承 Object.prototype,所以必然是 true 。
好了,真正神奇的地方来了,看这段代码
Function instanceof Function;//true
怎么理解呢?在这里,Function 如果理解成普通对象 ,那么就是 Object 构造函数的实例,所以原型链上有 Object.prototype 这个对象。再往上就只有 null 了。原型链上找不到 Function.prototype 这个对象,所以在这里不能理解成普通对象。
那么 Function 在这里理解成一个构造函数,那么我 Function 就是一个函数,我们都知道,所有的函数都是构造函数 Function 生成的,全部都继承 Function.protype 这个对象 ,所以上面打印的是 true 。
等一下,再让我理一遍,我是 Function ,一个内置的构造函数,所以我是函数。而函数都是内置构造函数 Function 的实例,在这里,“我生了我?!”
我在风中凌乱。。。
使用 constructor 方法也能看出来,貌似真的是这样的。
Function.prototype.constructor ===Function //true
很神奇,Function 对象是由自己本身 Function构造函数 生成的,就是“我生了我”。
console.log(Function.hasOwnProperty('constructor'));false
constructor 这个属性只存在于 Function.prototype 中,所以确定 Function.prototype 的构造函数是 Function。我生了我石锤
内容总结
以上是互联网集市为您收集整理的javascript的哲学,Function构造函数的神奇之处!我生了我!全部内容,希望文章能够帮你解决javascript的哲学,Function构造函数的神奇之处!我生了我!所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。