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

js原型原型

​一、原型 1、prototype和constructor 在js每个函数(非箭头函数,一般关于原型的有关知识我们都只考虑构造函数)都会拥有一个 prototype 属性,该属性值是一个对象...__proto__) // true 二、原型原型链:《JavaScript高级程序设计》的描述是:每个构造函数都有一个原型对象,如果该原型是另一个类型的实例呢?...原型的查找机制:实例对象上找不到指定属性,就从该原型对象上找,如果还是找不到就到该原型对象上的原型上去找,。...语句上,它还会影响到所有继承来自该 [[Prototype]] 的对象,如果你关心性能,你就不应该在一个对象修改它的 [[Prototype]]。...let objPrototype = {} let obj = Object.create(objPrototype) console.log(obj) // {} 三、关于原型各种指向问题总结 前置知识

1.1K00

JS原型原型

prototype就是调用构造函数所创建的实例对象的原型(proto)。js在创建对象的时候,都有一个叫做proto的属性,用于指向它的函数对象的原型对象prototype。...原型链 每一个对象都可以有一个原型,这可原型还可以有它自己的原型,以此类推,就形成了原型链。...查找一个对象的属性或方法的时候,如果这个对象没有这个属性或者方法,那就会在这个对象的原型对象中去找,以此类推,直到原型链结束。..._proto_ _proto_是原型链查询实际用到的,指向构造函数的原型对象,他是对象独有的。对象._proto_ = 构造函数.prototype。 在js,万物皆是对象,函数也是对象。...3、构造函数的prototype指向原型对象,原型对象的constructor指向构造函数。 使用 prototype最主要的用法就是将属性暴露成公用的。

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

    说说JS原型对象和原型

    理解原型对象(有些文章简称为原型)和原型链,是理解JS的重要一环。下面是笔者对JS原型的理解, 函数对象 俗话说,JS万物皆对象。函数也是一个对象,只不过函数是在特定环境执行代码的对象。...每声明一个函数,此函数在JS执行解释时都会被当作一个对象来维护,这就是函数对象。...JS声明函数的方式有: function fn1(){} var fn2 = function(){} var fn3 = new Function() 所以可以理解为fn1、fn2、fn3都是函数对象...JS还包括一些系统内置的函数对象,比如: Function Object Array String Number RegExp 函数对象之外的对象都是普通对象。...不说话看图: 由此,可得到下面的关系图: 思考 原型的关系图其实还缺少一环,就是内置函数Function。

    9010

    js数组的sort()方法排序

    带参调用: 如果想要自己规定排序方式,就需要在sort()方法中提供一个比较函数,该函数要比较两个值即有两个形参a 和 b,函数执行时浏览器会将数组的元素依次作为实参传入,返回一个用于说明这两个值的相对顺序的数字...sort()方法会根据函数返回值来进行数组元素的交换。返回值如下: 若 a 小于 b,在排序后的数组 a 应该出现在 b 之前,则返回一个小于 0 的值。 若 a 等于 b,则返回 0。...()参数大于0,交换a b顺序,升序排列 }else if(a<b){ return -1; //sort()参数小于0,a...三.对sort(sortby)方法的理解: sort()方法主要依靠其回调函数来进行排序,回调函数需要两个参数,在执行sort()方法时会调用回调函数,这时会将调用sort()方法的数组的元素作为实参两两依次作为回调函数实参传入...以上是关于JSsort函数的小结,后续遇到新的问题再继续更新!

    6.4K20

    JS原型原型

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

    1.7K50

    深度剖析前端JavaScript原型(JS的对象原型)

    原型对象也可能拥有原型,并从中继承方法和属性,一层一层、以此类推。这种关系常被称为原型链 (prototype chain),它解释了为何一个对象会拥有定义在其他对象的属性和方法。...注意:必须重申,原型的方法和属性没有被复制到其他对象——它们被访问需要通过前面所说的“原型链”的方式。...注意:没有官方的方法用于直接访问一个对象的原型对象——原型的“连接”被定义在一个内部属性,在 JavaScript 语言标准中用 [[prototype]] 表示(参见 ECMAScript)。...JavaScript 到处都是通过原型链继承的例子。比如,你可以尝试从 String、Date、Number 和 Array 全局对象的原型寻找方法和属性。...这证明了先前描述的原型链模型。这种继承模型下,上游对象的方法不会复制到下游的对象实例;下游对象本身虽然没有定义这些方法,但浏览器会通过上溯原型链、从上游对象中找到它们。

    1.1K30

    浅谈与使用js原型

    浅谈与使用js原型# 1 什么是原型# “ 每个函数都会创建一个 prototype 属性,这个属性是一个对象,包含应该由特定引用类型的实例 共享的属性和方法。...按照我现在的理解就是:每个函数上面都有一个prototype属性,这个就是原型,我们可以通过这个原型属性来完成一些比较厉害的操作。...2 原型的使用# 首先我们使用设计模式的工厂模式来实现一个Person类,可以通过new这个Person的函数来创建一个与之具有相同属性的实例,也就省的我们再次创建Person函数了。...person2 = new Person('Greg', 27, 'Doctor') person1.sayName() // Nicholas person2.sayName() // Greg 从上面代码可以看到...3 小结# 本文仅是对于原型有个简单的认识也使用,原型js是一个比较重要的模块,还有__proto__ 、 原型链 这些概念没有讲到,如果感兴趣,可以再通过书籍及视频来交叉理解。

    1.1K30

    JS的面向对象、原型原型链、继承总结大全

    补充: js说一切都是对象,是不完全的,在js6种数据类型(Undefined,Null,Number,Boolean,String,Object),前五种是基本数据类型,是原始值类型,这些值是在底层实现的...Person.prototype.constructor = Person; 原型模式就是不必在构造函数定义实例的属性和方法,而是将属性和方法都添加到原型对象。...showName 这种构造函数模式和原型模式组合使用,基本上可以说是js面向对象开发的一种默认模式,介绍了以上这几种常用创建对象的方式, 还有其他不常用的模式就不介绍了,接下来想说的是js中比较重要的继承...属性查找机制 js实例属性的查找,是按照原型链进行查找,先找实例本身有没有这个属性,如果没有就去查找查找实例的原型对象,也就是[[prototype]]属性指向的原型对象,一直查到Object.prototype...__proto__ === Object.prototype); // true 构造函数模式和原型模式组合继承 只通过原型来实现继承,还存在一定问题,所以js中一般通过借用构造函数和原型组合的方式来实现继承

    1.4K22

    JS面试必问-JS原型原型

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

    1.6K20

    JS进阶:原型原型

    JS进阶:原型原型链 image.png JavaScript除了基础数据类型外都是对象(引用类型)。...该原型对象也有一个自己的原型对象( __proto__ ) ,层层向上直到一个对象的原型对象为 null。根据定义,null 没有原型,并作为这个原型的最后一个环节。...如上文所述,原型对象就是用来存放实例中共有的那部分属性。 在JavaScript,所有的对象都是由它的原型对象继承而来,反之,所有的对象都可以作为原型对象存在。...这里dog2重写bark方法并没有对dog1造成影响,因为它重写bark方法的操作实际上是为自己添加了一个新的方法使原型的bark方法被覆盖了,而并非直接修改了原型的方法。...如果想要统一修改所有实例继承的属性,只需要直接修改原型对象的属性即可。而且每个实例仍然可以重写原型已经存在的属性来覆盖这个属性,并且不会影响到其他的实例。

    1.4K30

    jssort排序方法_sort对象排序

    sort() 方法用于对数组的元素进行排序,并返回数组。默认排序顺序是根据字符串Unicode码点。 语法:array.sort(fun);参数fun可选。规定排序顺序。必须是函数。...注:如果调用该方法时没有使用参数,将按字母顺序对数组的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。...比较函数应该具有两个参数 a 和 b,其返回值如下: 若 a 小于 b,在排序后的数组 a 应该出现在 b 之前,则返回一个小于 0 的值。 若 a 等于b,则返回 0。...function(a,b){ return b - a; }) console.log(arr4);//输出 [1899, 111, 50, 45, 35, 30, 10] 3.根据数组的对象的某个属性值排序...//输出新的排序 // {id: 2} // {id: 3} // {id: 5} // {id: 6} // {id: 9} // {id: 10} 4.根据数组的对象的多个属性值排序

    2.6K30

    js原型

    显示原型 1.每一个构造函数都有一个prototype属性,默认指向一个空Object对象(原型对象) function fun(){ } console.log(fun.prototype ) //{...) //true 5.构造函数与它的原型对象有一个相互引用的关系 6.原型对象上添加的方法用于实例对象上使用 隐式原型 每一个实例对象都有一个__proto__属性,称之为隐式原型 对象的隐式原型的值为其对应构造函数的显示原型的值...__proto__) Fn.prototype.test = function(){ console.log('test') } fn.test() 原型链 对象属性的查找规则 原型链本质上是从隐式原型链...test2,发现有直接调用test2 当执行fn.toString(),时,自身对象没有,接下来查找它构造函数的原型对象上是否有toString(),发现没有,接下来又继续沿着Fn原型对象的构造函数的原型对象上查找找到...toString() 当执行fn.test3()时,查找自身对象没有,它直接的构造函数对象的原型对象上也没有,接下来沿着Fn原型对象的构造函数的原型对象的构造函数的原型对象上查找,这里已经找到原型链的尽头

    2.1K20

    JS 原型

    JS 原型链 1. 原型原型链的基础结论 1.1 函数与对象的关系 函数是对象,对象都是通过函数创建的。 函数与对象并不是简单的包含与被包含的关系。...1.2 原型的类别 显示原型:prototype,是每个函数function独有的属性。 隐式原型: __proto__,是每个对象都具有的属性。...1.3 原型原型原型:一个函数可以看成一个类,原型是所有类都有的一个属性,原型的作用就是给这个类的一个对象都添加一个统一的方法。...1.4 JavaScript 里最顶层的两个概念 Function 是最顶层的构造器 Function 是JavaScript 里最顶层的构造器,它构造了系统的所有对象,包括定义对象、系统内置对象、甚至包括它自己...__proto__ **前提结论:**在JavaScript,函数都是对象,是对象就有隐藏的__proto__属性 「解释:」 Function是最顶级的构造器,函数对象都是通过它构造的 「结论:」函数

    2.3K30

    js原型入门

    前言 本文主要是根据《head first javascript程序设计》摘抄学习而成,学习采用这本书主要是一位阿里大佬的建议,经过近期的学习阅读,发现确实比其他的js书籍能更好的理解和使用js的相关知识...之所以出现这样的问题,是因为我们没有充分利用好js的对象模型,其是基于原型的概念的。 原型是什么 js可以从其他对象那里继承属性和行为,更具体的说js使用原型继承。其中其行为继承的对象称为原型对象。...这个是指,会继承原型对象的属性(包括属性方法),同时在新对象添加属性。 那么如果我们要定义一个小狗的原型,其对象图是什么样的呢?...重写原型 那如果有些时候,我们需要重写bark方法,而不用原型的方法呢?...答案肯定是可以的,我们可以在对象重新定义自己的属性和方法,那么在继承的工作原理,他就会现在实例对象寻找,找到对应的方法之后就不会向上寻找原型对象的方法。

    1.5K11

    彻底弄懂JS原型原型

    当访问一个对象的属性时,先在对象的本身找,找不到就去对象的原型上找,如果还是找不到,就去对象的原型原型也是对象,也有它自己的原型)的原型上找,如此继续,直到找到为止,或者查找到最顶层的原型对象也没有找到...在上面内容的基础之上,我们来模拟一下js引擎读取对象属性:function getProperty(obj, propName) { // 在对象本身查找 if (obj.hasOwnProperty...这个原型对象默认有一个constructor属性,指回该构造函数。...我们来看一下MDN上对于instanceof运算符的描述:instanceof运算符用于测试构造函数的prototype属性是否出现在对象的原型的任何位置也就是说instanceof操作符左边是一个对象...__proto__ === Function.prototype总结一下:instanceof运算符用于检查右边构造函数的prototype属性是否出现在左边对象的原型的任何位置。

    1.1K40
    领券