javascript构造函数以及原型对象的理解

发布时间 - 2026-01-10 22:30:32    点击率:

以下是一个构造函数的例子

如果是实例方法,不同的实例化,它们引用的地址是不一样的,是唯一的。

//定义一个构造函数
 function People(name,age){
  this.name=name;
  this.age=age;
  this.dothings=function(){
   retrun this.name+this.age;
   }
 }
 var people1 = new People("panda1",25);
 var people2 = new People("panda2",26);
 alert(people1.name==people2.name) //false

 另外一种编写原型对象的方法,通过字面量的方式创建原型对象,这里{}就是对象,是Object,new Object相对于{}

 People.prototype={
 constructor:People //强制指向People
  name:"panda",
  age:25,
  dothings:function(){
   return this.name+this.age;
  }
}
var people = new People();
alert(people.constructor); //function People(){}

使用字面量的方式创新对象,使用constructor属性不会指向实例,而会指向Object。

创建的每一个函数都有一个prototype(原型)属性,也就是一个对象,原型的用途:包含由特定类型的所有实例共享的属性和方法。换句话说就是prototype通过调用构造函数而创建的那个对象的原型对象。

原型对象的好处:让所有对象实例共享它的所包含的属性与方法,不必在构造函数中定义对象信息,而是可以直接将这些添加到原型中。

//声明一个构造函数
 function People(){}
 //在原型添加属性
 People.prototype.name="panda";
 People.prototype.age=25;
 people.prototype.dothings=function(){
  return this.name+this.age;
 }  
 //实例化构造函数
 var people1 = new People();
 var people2 = new People();
 alert(people1.name==perople2.name) //true 因为都是原型里的方法,它们的地址是共享的,大家都来自同一地方。

使用对象实例无法访问到prototype,prototype属性是一个对象,需要访问prototype对象,通过people.__proto__来访问或者使用构造函数名(对象名)People.prototype,但是这个属性在IE浏览器不支持(undefind),__proto__是指向原型对象的一个指针,

另外还有一个constructor属性,这是一个构造属性,获取构造函数本身,作用是:被原型指针定位,得到构造函数本身,也就是对象实例对应原型对象的作用。

判读一个对象是否指向该构造函数的原型对象,可以使用isPrototypeOf方法来测试

People.prototype.isPrototypeOf(people1)  //true

如果实例与原型里同时存在相同的属性,比如例子中的People下的name属性,

var people = new People();
people.name="bear";
alert(people.name); //bear
alert(people1.name); //panda

实例属性并没有重新原型属性,实例的对象采用就近原则。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!


# js  # 构造函数  # 原型对象  # 一文秒懂JavaScript构造函数、实例、原型对象以及原型链  # 详解js中的原型  # 原型链  # js 原型对象和原型链理解  # 图文详解JavaScript的原型对象及原型链  # 浅谈JS原型对象和原型链  # JS原型对象操作实例分析  # JavaScript原型对象原理与应用分析  # JavaScript原型对象、构造函数和实例对象功能与用法详解  # js使用原型对象(prototype)需要注意的地方  # 深入理解javascript构造函数和原型对象  # 全面解析js中的原型  # 是一个  # 都是  # 都有  # 大家都  # 也就  # 这是一个  # 还有一个  # 可以直接  # 不支持  # 可以使用  # 相对于  # 方法来  # 所包含  # 无法访问  # 来访问  # 是唯一  # retrun  # var  # dothings  # brush 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】  Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】  悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音  如何在IIS中新建站点并配置端口与IP地址?  javascript中数组(Array)对象和字符串(String)对象的常用方法总结  Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】  iOS验证手机号的正则表达式  详解CentOS6.5 安装 MySQL5.1.71的方法  如何用wdcp快速搭建高效网站?  Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册  HTML 中动态设置元素 name 属性的正确语法详解  用yum安装MySQLdb模块的步骤方法  千库网官网入口推荐 千库网设计创意平台入口  长沙做网站要多少钱,长沙国安网络怎么样?  html5的keygen标签为什么废弃_替代方案说明【解答】  如何在IIS7上新建站点并设置安全权限?  Laravel定时任务怎么设置_Laravel Crontab调度器配置  Python文件异常处理策略_健壮性说明【指导】  Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载  宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法  香港服务器网站推广:SEO优化与外贸独立站搭建策略  如何基于PHP生成高效IDC网络公司建站源码?  如何选择可靠的免备案建站服务器?  Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】  详解Android图表 MPAndroidChart折线图  无锡营销型网站制作公司,无锡网选车牌流程?  php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】  高端建站三要素:定制模板、企业官网与响应式设计优化  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  WEB开发之注册页面验证码倒计时代码的实现  Laravel如何实现用户注册和登录?(Auth脚手架指南)  5种Android数据存储方式汇总  Laravel Debugbar怎么安装_Laravel调试工具栏配置指南  ,南京靠谱的征婚网站?  微信小程序 配置文件详细介绍  Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权  Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程  专业商城网站制作公司有哪些,pi商城官网是哪个?  Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试  大连 网站制作,大连天途有线官网?  C#如何调用原生C++ COM对象详解  Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】  java中使用zxing批量生成二维码立牌