首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

来自原形与原型的拷问

前言 在JS中,我们经常会遇到原型。字面上的意思会让我们认为,是某个对象的原型,可用来继承。但是其实这样的理解是片面的,下面通过本文来了解「原型与原型」的细节,再顺便谈谈继承的几种方式。...原型 在讲到原型之前,我们先来回顾一下JS中的对象。在JS中,万物皆对象,就像字符串、数值、布尔、数组等。「ECMA-262」把对象定义为:「无序属性的集合,其属性可包含基本值、对象或函数」。...那么JS具体是怎样继承的呢? 在讲到继承这个话题之前,我们先来理解原型这个概念。 ❝原型 ❞ 构造函数,原型和实例的关系已经很清楚了。...avatar 上图可很清晰的看出原型的结构,这不禁让我想到JS的一个运算符「instanceof」,instanceof可用来判断一个实例对象是否属于一个构造函数。...总结 温故而知新,再次看回《JS高级程序设计》这本书的原型与原型部分,发现很多以前忽略掉的知识点。而这次回看这个知识点,并输出了一篇文章,对我来说受益匪浅。

43230
您找到你想要的搜索结果了吗?
是的
没有找到

js原型污染

js原型 前两天,做了一道CTF题目,遇到了js原型污染。 js原型,我的理解,类似于java中的静态属性。...原型(Prototype Chain) 原型是一种对象之间的关系,它是由对象的原型对象构成的链式结构。...当试图访问一个对象的属性或方法时,JavaScript引擎会沿着原型向上查找,直到找到匹配的属性或方法或者到达原型的顶端。...详解 控制台声明一个空对象,可以看到只有一个[[Prototype]]属性,这个就是js原型,同时可以看到这个空对象的原型继承自Object对象(所有的对象都会继承Object),有常用的toString...原型污染 通过修改或者添加其原型上的原型对象,使其当前对象可以访问到错误或者不具备的属性。

11410

JS原型温故

js中,对于对象的理解很重要。 js的数据类型主要分为基本类型和引用类型。基本类型包括String、Number、Boolean、undefined、null。引用类型包括Object。...此时我又要祭出我珍藏已久的JS万物图了,相信筒子们可以图中理解Function和Object之间的互相关系了。 ?...所以结合上面几个图,可以形成这样一个结论: 在JS世界中,null为开始,由null开始衍生出Object.prototype。Object.prototype的隐式原型指向null。...从上图可以看出一个关系,那就是js中的各对象间都是通过原型来互相连接起来的,这个原型将所有对象链接在了一起,这就是为什么说JS是基于原型的面向对象编程语言,即使现在有es6 7有了class类,它本质上也是基于原型形成的语法糖而已...js中实现的继承就是通过这条原型来工作的:在访问一个对象的某个属性时,先该对象的现有属性中查找,如果没有,再沿着__proto__这种向上找,这就是原型

1.2K20

理解JS 原型

#原型 原型简单用一句话概括就是: 原型就是 对象的__proto__所连接的状结构 为了方便我们理解原型,举一个简单的例子: function F(){ this.a = 1;...__proto__ --> null // 其中的 --> 就表示 __proto__ 也就是原型 console.log(o.a); // 1 // o上有a这个属性吗?...图中这条红色的线就是原型。 由此可见,实例对象可访问自己原型对象上的属性和方法,额..准确来说是: 当一个对象 查找属性或方法时,自己有,停止查找,返回结果。...如果一直找到了原型的最顶端(null),还没有找到,返回undefined。 我们先回顾一下那个sayName的问题: 怎么让所有的实例对象都是用一个sayName方法呢。...#补充 constructor 说一下我的经历,一开始理解原型时,一直在prototype、__proto__、constructor在这个三个属性中绕来绕去。

1.7K10

学习 Node.js 一本就够了【送

电子工业出版社上新了一本书籍《Node.js实战:使用Egg.js+Vue.js+Docker构建渐进式、可持续集成与交付应用》,本书以实现一个类似Dribble的应用为例,将Node.js的技术点贯穿前后端的开发...,整合Egg.js、Vue.js、Docker实现持续集成、持续部署的前后端分离应用。...送出书籍《Node.js实战:使用Egg.js+Vue.js+Docker构建渐进式、可持续集成与交付应用》 4本,此书适合前后的开发者。...笔者希望更多的人学习Node.js、使用Node.js,使它更加强大。...第2章:讲解JavaScript的异步、函数式编程、Koa.js实现原理,以及Egg.js是如何在Koa.js上面进行扩展的、Egg.js是怎样的架构、如何开发出一个Egg.js插件并发布到npmjs。

1.5K30

JS原型与原型

原型与原型 JavaScript有着七种基本类型String、Number、Boolean、Null、Undefined、Symbol、Object,前六种为基本数据类型,Object为引用类型。...值得注意的是typeof (null)会返回Object,这是因为JS二进制前三位都为0的话会被判断为Object类型,null的二进制表示是全0,自然前三位也是0,所以执行typeof时会返回Object...Student(); console.log(stu1.from) // sdust console.log(stu2.from) // sdust __proto__ __proto__ 是原型查询中实际用到的...Student.prototype.constructor === Student) // true console.log(stu.constructor === Student) // true 原型...原型可以简单理解为将原型连成一条js每一次获取对象中的属性都是一次查询过程,如果在自有属性中找不到就会去原型对象中查找,如果原型对象中还查不到,就回去原型对象的原型中查找,也就是按照原型查找,直到查找到原型的顶端

1.7K50

JS面试必问-JS原型及原型

为什么需要原型 在js中万物皆对象,对象可以说是重中之重了。每一个对象都拥有自己的属性。但是在这个世界中有很多东西都是相似的,可以归为一类,他们有共同的方法和属性。不可能让每一个对象都定义一个属性吧。...所以,在js中怎么才能让多个对象共享一个或多个方法呢?原型的出现就是为了解决这个问题。...什么是原型 根据字面意思我们可以这样理解,就是将原型连成一条。...我们上面讲过,js每一次获取对象中的属性都是一次查询过程,如果在自有属性中找不到就会去原型对象中查找,如果原型对象中还查不到,就回去原型对象的原型中查找,也就是按照原型查找,直到查找到原型的顶端,也就是...在js中,对象都有__proto__属性,一般这个是被称为隐式的原型,该隐式原型指向构造该对象的构造函数的原型。

1.4K20

媒头条I央视荐《区块:通往资产数字化之路》

一直关注比特币、区块发展的央视财经频道近日在节目中向全国观众推荐区块书籍《区块:通往资产数字化之路》 推荐语如此写到: 区块现在是一个热门话题,很多人都知道区块,但是并没有真正了解区块技术就把它视为一夜暴富的神话...,那这本书就是从基础技术层面来解读了基于比特币的数字货币技术在金融领域的应用原理,实践和趋势,比如比特币和区块的分支发展,包括替代、替代币、替代应用程序等等,很多适应的信息都在其列。...虽然国内打击虚拟币炒作行为,但对于区块技术却持开放态度,无币区块,赋能实体经济是监管基调,本次比特币书籍被央视直接推荐,更体现出国家对于以比特币为代表的区块技术的关注度。...谈论区块绕不过比特币,区块脱胎于比特币,将发挥更广泛的应用,对数字经济产生更深远的影响,而比特币作为区块技术的杀手级应用也必将成为数字货币革命的先锋军!

78920

JS 口袋】第 6 章:JS 中的闭包与模块

Redux是另一个“好”全局变量的例子:整个应用程序的状态存储在一个JS对象中,这个对象可以从整个应用程序(通过Redux)访问。...JS中的全局变量非常糟糕的另一个原因是引擎足够友好,可以为咱们创建全局变量。...JS闭包的真正目的是什么? 闭包的需要 除了纯粹的“学术”知识之外,JS闭包还有很多用处: 提供私有的全局变量 在函数调用之间保存变量(状态) JS中闭包最有趣的应用程序之一是模块模式。...有时全局变量是有用的,需要格外小心使用,因为JS引擎可以自由地创建全局变量。 这些年来出现了许多模式来管理全局变量,模块模式就是其中之一。 模块模式建立在闭包上,这是JS的固有特性。...什么是 JS 模块,为什么要使用它? 原文:https://github.com/valentinog...

69730

js原型及原型解析

js原型、原型 这几天闲了看了下js的原型,以下内容为个人理解,如有错误,尽请指正。...首先,明确一点:js中的对象分为普通对象和函数对象,一般我们自定义的可以被new的函数称作函数对象,另外js内置了譬如:Array、Date、Object、Function、Number、String、...=== Person // true 3、所有对象,不论普通对象还是函数对象都有一个__proto__属性,该属性指向其构造的原型,使用__proto__将所有对象联系起来,才形成了所谓的原型,...4、一般我们通过.操作符获取一个对象的属性或方法的时候,会首先在当前对象自身上查找该属性或方法,找不到的话会继续顺着__proto__也就是原型向上查找,直到找到,否则返回undefined,举个栗子...__proto__ === p.constructor.prototype) // true 下一节的话讲下js中的继承~

2K30
领券