千家信息网

js中的原型的示例分析

发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,小编给大家分享一下js中的原型的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在讲js的原型之前,必须先了解下Ob
千家信息网最后更新 2025年02月23日js中的原型的示例分析

小编给大家分享一下js中的原型的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

在讲js的原型之前,必须先了解下Object和Function。

Object和Function都作为JS的自带函数,Object继承自己,Funtion继承自己,Object和Function互相是继承对方,也就是说Object和Function都既是函数也是对象。

console.log(Function instanceof Object); // trueconsole.log(Object instanceof Function); // true

Object 是 Function的实例,而Function是它自己的实例。

console.log(Function.prototype); // ƒ () { [native code] }console.log(Object.prototype);  // Object

普通对象和函数对象

JavaScript中万物皆对象,但对象之间也是有区别的。分为函数对象和普通对象。

函数对象可以创建普通对象,普通对象没法创建函数对象,普通对象JS世界中最低级的小喽啰,啥特权也没有。

凡是通过new Function创建的对象都是函数对象,其他都是普通对象(通常通过Object创建),可以通过typeof来判断。

function f1(){};typeof f1 //"function"var o1 = new f1();typeof o1 //"object"var o2 = {};typeof o2 //"object"

这边要注意的是下面这两种写法是一样的

function f1(){};  ==  var f1 = new Function();
function f2(a,b){  alert(a+b);}等价于var f2 = new Function(a,b,"alert(a+b)");

prototype、_proto_和construetor(构造函数)

下面两句话也很重要

1、每一个函数对象都有一个prototype属性,但是普通对象是没有的;

  prototype下面又有个construetor,指向这个函数。

2、每个对象都有一个名为_proto_的内部属性,指向它所对应的构造函数的原型对象,原型链基于_proto_;

好了,开始上代码和例子,建一个普通对象,我们可以看到

  1、o的确没有prototype属性

  2、o是Object的实例

  3、o的__proto__指向Object的prototype

  4、Object.prototype.constructor指向Object本身

  还可以继续往下延伸......

var o = {};  console.log(o.prototype); //undefined  console.log(o instanceof Object); //true  console.log(o.__proto__ === Object.prototype) //true  console.log(Object === Object.prototype.constructor) //true   console.log(Object.prototype.constructor) //function Object()  console.log(Object.prototype.__proto__); //null

下面来一个函数对象,从下面的例子可以看出

1、demo是函数对象,f1还是普通对象

2、f1是Demo的实例

3、demo的原型prototype的__proto__指向Object的原型prototype,而Object的原型prototyped的__proto__指向null;

function Demo(){};  var f1 = new Demo();  console.log(f1.prototype); //undefined  console.log(f1 instanceof Demo); //true  console.log(f1.__proto__ === Demo.prototype); //true  console.log(Demo === Demo.prototype.constructor) ;//true  console.log(Demo.prototype.__proto__ === Object.prototype) ;//true  console.log(Object.prototype.__proto__); //null

原型链

javascript中,每个对象都会在内部生成一个proto 属性,当我们访问一个对象属性时,如果这个对象不存在就回去proto 指向的对象里面找,一层一层找下去,这就是javascript原型链的概念。

f1.__proto__ ==> Demo.prototype ==> Demo.prototype.__proto__ ==> Object.prototype ==> Object.prototype.__proto__ ==> null

JS中所有的东西都是对象,所有的东西都由Object衍生而来, 即所有东西原型链的终点指向null

以上是"js中的原型的示例分析"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

对象 函数 原型 普通 指向 属性 实例 东西 篇文章 示例 分析 例子 内容 低级 重要 万物 上代 不怎么 世界 之间 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网公司软件开发语言 闵行区特定软件开发设计标准 想转网络安全 ftb服务器出现了问题怎么解决 辽宁智能软件开发诚信合作 网络安全和数据安全培训收获 数据库的安全特性指 网络安全与信息管理专责 三线城市学什么网络技术好 北京项目软件开发需要多少钱 温州mes软件开发 服务器cpu命名规则 软件开发发票税率如何选 网络安全橘皮书指的是什么 网络安全研究生院校排行 建立arcgis数据库 服务器上的硬盘有系统吗 获取远程服务器文件 西门子时间服务器配置 软件开发计划图书管理系统 南京环保软件开发销售公司 数据库产品市场份额 徐汇区网络技术咨询哪家好 网络安全向导有什么用 查看数据库表命令 邯郸大名县的服务器是哪里 网络安全对于数据备份意义 数据库打不开邮件合并主文档 徐州市网络安全知识竞赛入口 vip线路服务器验证怎么破解
0