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

JS中prototype介绍

a和fn,而在o2中没有改变,由于数组和函数都是对象,是引用类型, 这就说明o1中的属性和方法与o2中的属性与方法虽然同名但却不是一个引用,而是对Obj对象定义的属性和方法的一个复制。...person1中包含了name属性,同时自动生成一个__proto__属性,该属性指向Person的prototype,可以访问到prototype内定义的printName方法,大概就是这个样子的...同样道理如果在实例中定义如prototype同名的属性或函数,则会覆盖prototype的属性或函数。...中的[] 构造简单对象 当然prototype不是专门为解决上面问题而定义的,但是却解决了上面问题。...了解了这些知识就可以构建一个科学些的、复用率高的对象,如果希望实例对象的属性或函数则定义到prototype中, 如果希望每个实例单独拥有的属性或方法则定义到this中,可以通过构造函数传递实例化参数

90520

js中的prototype的解析

js的方法可以分为三种:对象方法、类方法、prototype方法 //对象方法 function People(name){ this.name=name; this.introduct=function...=function(){ alert(“我的名字是”+this.name); } 这里要注意类方法只能通过类名.方法名调用,实例方法只能通过实例名.方法名调用,反之不可以 还有prototype...是类的属性,new出来的对象是没有这个属性的,比如People.prototype可以,var p=new People(); p.prototype不可以 function Aclass2(){...,要注意不能修改父类的属性和方法,可以这样写Aclass2.prototype=new Aclass(); 把父类的一个实例对象赋值给子类的prototype属性,我们调用实例对象的时候,首先会调用构造函数的属性和方法...,然后是 prototype中写的和父类的属性和方法 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/163359.html原文链接:https://javaforall.cn

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

    prototype.js的系列文章——关于prototype.js

    很早就知道prototype.js是一个javascript的工具函数库,平时的开发中使用频率也非常的高,但是,由于工作时间问题,一直都没有静下心来研究学习一下,最近又萌发了系统学习prototype.js...关于prototype.js 如果你曾经使用过prototype.js,那么,本系列文章希望能够给你提供一个使用指南,可以作为prototype.js中函数的参考文档。...从名字上就能看出来,prototype.js是个js文件,对,它的确是个js文件,是个拥有四千多行代码的文件,对于javascript的初学着来说,要读懂它,太难了,就像普通百姓很难了解电视机的原理一样...prototype.js的作者是Sam Stephenson,对,是个老外,我不崇洋媚外,但我的确欣赏老外在技术领域的专注和细致,这里向他老人家致敬了。...系列文章列表(动态更新中) prototype.js的系列文章——$()函数 prototype.js的系列文章——$F()函数 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn

    75240

    js中for in碰到Array.prototype的问题

    最近一个js项目中使用了for(let i in arr) {} 循环,for in的好处就是被遍历的对象可以是数组,可以是对象,就算是null和undefined都没有问题,不会报错,所以被大量使用,...而且当一个无序的数组中更是不会遍历空数据。...自定义方法,结果项目开始报错,最后发现问题出现在for in的时候会遍历枚举对象属性,包括prototype中的enumerable为true的对象属性,所以就出现问题了。...last,使用defineProperty是默认了enumerable:false,可是插件不是都使用了 defineProperty方法,如果我们把第三方的插件中的方法enumerable属性改为false...但是我们不可能把所有使用Array.prototype的都去设置一下,继续找找别的办法吧,继续发现了通过hasOwnProperty判断是是否为自有属性,2种写法如下: for (let idx in

    98740

    js-函数的prototype

    js-函数的prototype 1、 函数的prototype属性 2、 给原型对象添加属性(一般都是方法) 3、 显式原型与隐式原型 1、 函数的prototype属性 每个 函数 都有一个prototype...) 图1 图2 /* Date函数的流程基本就是 首先创建一个Date函数, 然后通过Date.prototype(指向原型对象)向Date函数原型对象中添加很多方法 如下:以函数fun为例 *...// true console.log(fun.prototype.constructor === fun) // true 2、 给原型对象添加属性(一般都是方法) 作用:函数的所有实例对象自动拥有原型中的属性...__proto__) /* 对象的隐式原型的值为其对应的构造函数的显式原型的值,引用地址值相同,指向同一个对象 */ console.log(Fn.prototype === fn....() 对象可以直接访问自己__proto__里面的属性和方法,本质上 对象的__proto__与其构造函数的prototype 指向的是同一个对象 内存结构 总结: (1)对象的prototype

    73020

    js中原型(prototype)

    函数的prototype属性(图) * 每个函数都有一个prototype属性, 它默认指向一个Object空对象(即称为: 原型对象) * 原型对象中有一个属性constructor, 它指向函数对象...给原型对象添加属性(一般都是方法) * 作用: 函数的所有实例对象自动拥有原型中的属性(方法) --> // 每个函数都有一个prototype...属性, 它默认指向一个对象(即称为: 原型对象) console.log(Date.prototype, typeof Date.prototype) function fn() { }...console.log(fn.prototype, typeof fn.prototype) // 原型对象中有一个属性constructor, 它指向函数对象 console.log(Date.prototype.constructor...(age) { // 添加方法 this.age = age } // 创建函数的实例对象 var f = new F() console.log(f.age) f.setAge

    1.1K00

    理解js中的原型链,prototype与__proto__的关系

    首先,要明确几个点: 1.在JS里,万物皆对象。方法(Function)是对象,方法的原型(Function.prototype)是对象。因此,它们都会具有对象共有的特点。...即:对象具有属性__proto__,可称为隐式原型,一个对象的隐式原型指向构造该对象的构造函数的原型,这也保证了实例能够访问在构造函数原型中定义的属性和方法。...那么当我们调用p.Say()时,首先p中没有Say这个属性, 于是,他就需要到他的__proto__中去找,也就是Person.prototype,而我们在上面定义了 Person.prototype.Say...__proto__,也就是 Programmer.prototype,也就是p1中去找,由于p1中也没有Say,那就去p.__proto__....最后,其实prototype只是一个假象,他在实现原型链中只是起到了一个辅助作用,换句话说,他只是在new的时候有着一定的价值,而原型链的本质,其实在于__proto__!

    1.2K80

    帮你彻底搞懂JS中的prototype、__proto__与constructor(图解)

    前言   作为一名前端工程师,必须搞懂JS中的prototype、__proto__与constructor属性,相信很多初学者对这些属性存在许多困惑,容易把它们混淆,本文旨在帮助大家理清它们之间的关系并彻底搞懂它们...proto”的缩写),实际上,该属性在ES标准定义中的名字应该是[[Prototype]],具体实现是由浏览器代理自己实现,谷歌浏览器的实现就是将[[Prototype]]命名为__proto__,大家清楚这个标准定义与具体实现的区别即可...但是由于JS中函数也是一种对象,所以函数也拥有__proto__和constructor属性,这点是致使我们产生困惑的很大原因之一。...而单从constructor这个属性来讲,只有prototype对象才有。每个函数在创建的时候,JS会同时创建一个该函数对应的prototype对象,而函数创建的对象....本文就此结束了,希望对那些对JS中的prototype、__proto__与constructor属性有困惑的同学有所帮助。

    1.7K20

    「转」javascript中的prototype

    但是在Javascript语言体系中,是不存在类(Class)的概念的,javascript中不是基于‘类的',而是通过构造函数(constructor)和原型链(prototype chains)实现的...3.prototype属性的作用 为了解决构造函数的对象实例之间无法共享属性的缺点,js提供了prototype属性。...js中每个数据类型都是对象(除了null和undefined),而每个对象都继承自另外一个对象,后者称为“原型”(prototype)对象,只有null除外,它没有自己的原型对象。...这很正常,毕竟是js中比较重要又比较抽象的概念,不可能那么快就掌握,再啃多几篇,说不定掌握其精髓。在某乎上,有一个活生生的实例,可能也是大家会遇到的问题。可以看看 js构造函数和原型对象。...以上所述是小编给大家介绍的详解Javascript中prototype属性(推荐)的相关知识,希望对大家有所帮助。

    58840

    轻松理解JS中的面向对象,顺便搞懂prototype和__proto__

    这篇文章主要讲一下JS中面向对象以及 __proto__,ptototype和constructor,这几个概念都是相关的,所以一起讲了。...Java版小狗还可以“汪汪汪”叫呢,JS版怎么办呢?JS给出的解决方案是给方法添加一个prototype属性,挂载在这上面的方法,在实例化的时候会给到实例对象。...JS中定义一个静态方法更简单,直接将它作为类函数的属性就行: Puppy.statciFunc = function() { // statciFunc就是一个静态方法 console.log...总结 最后来个总结,其实前面小节的标题就是核心了,我们再来总结下: JS中的函数可以作为函数使用,也可以作为类使用 作为类使用的函数实例化时需要使用new 为了让函数具有类的功能,函数都具有prototype...prototype本身也是对象,所以他也有__proto__,指向了他父级的prototype。__proto__和prototype的这种链式指向构成了JS的原型链。

    2.4K62
    领券